如果用c#代码实现:运行——cmd——notepad,对找开的文本文件进行数据写入!
首先:stringpatch=@"notepad.exe";Processthepatch=newProcess();thepatch.StartInfo.FileNam...
首先:
string patch = @"notepad.exe";
Process thepatch = new Process();
thepatch.StartInfo.FileName = patch;
thepatch.Start();
然后把内存信息写入文本文件中! 展开
string patch = @"notepad.exe";
Process thepatch = new Process();
thepatch.StartInfo.FileName = patch;
thepatch.Start();
然后把内存信息写入文本文件中! 展开
3个回答
展开全部
很容易实现。
首先你需要获得notpad的句柄,然后用WINAPI里面的sendmessage写入到记事本
首先添加引用
using System.Runtime.InteropServices;
调用方法如下:
[DllImport("User32.DLL")]
public static extern int SendMessage(IntPtr hWnd, uint Msg, int wParam, string lParam);
[DllImport("User32.DLL")]
public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
public const uint WM_SETTEXT = 0x000C;
private void button1_Click(object sender, EventArgs e)
{
#region [ 启动记事本 ]
System.Diagnostics.Process Proc;
try
{
// 启动记事本
Proc = new System.Diagnostics.Process();
Proc.StartInfo.FileName = "notepad.exe";
Proc.StartInfo.UseShellExecute = false;
Proc.StartInfo.RedirectStandardInput = true;
Proc.StartInfo.RedirectStandardOutput = true;
Proc.Start();
}
catch
{
Proc = null;
}
#endregion
#region [ 传递数据给记事本 ]
if (Proc != null)
{
// 调用 API, 传递数据
while (Proc.MainWindowHandle == IntPtr.Zero)
{
Proc.Refresh();
}
IntPtr vHandle = FindWindowEx(Proc.MainWindowHandle, IntPtr.Zero, "Edit", null);
// 传递数据给记事本
SendMessage(vHandle, WM_SETTEXT, 0, "Message");
}
#endregion
}
首先你需要获得notpad的句柄,然后用WINAPI里面的sendmessage写入到记事本
首先添加引用
using System.Runtime.InteropServices;
调用方法如下:
[DllImport("User32.DLL")]
public static extern int SendMessage(IntPtr hWnd, uint Msg, int wParam, string lParam);
[DllImport("User32.DLL")]
public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
public const uint WM_SETTEXT = 0x000C;
private void button1_Click(object sender, EventArgs e)
{
#region [ 启动记事本 ]
System.Diagnostics.Process Proc;
try
{
// 启动记事本
Proc = new System.Diagnostics.Process();
Proc.StartInfo.FileName = "notepad.exe";
Proc.StartInfo.UseShellExecute = false;
Proc.StartInfo.RedirectStandardInput = true;
Proc.StartInfo.RedirectStandardOutput = true;
Proc.Start();
}
catch
{
Proc = null;
}
#endregion
#region [ 传递数据给记事本 ]
if (Proc != null)
{
// 调用 API, 传递数据
while (Proc.MainWindowHandle == IntPtr.Zero)
{
Proc.Refresh();
}
IntPtr vHandle = FindWindowEx(Proc.MainWindowHandle, IntPtr.Zero, "Edit", null);
// 传递数据给记事本
SendMessage(vHandle, WM_SETTEXT, 0, "Message");
}
#endregion
}
展开全部
我不知道你为什么那么实现,但只是为了向文本文件写入数据的话,没有必要那么实现。
既然如此也不是没有办法实现,方法1:得到notepad的实例,并得到主窗口,向窗口发送文本消息(这种方法在vc下使用,在C#下如何操作,需要你自己查资料)
方法2:先向文件写入数据,然后再执行上面的代码,运行后效果差不多。
既然如此也不是没有办法实现,方法1:得到notepad的实例,并得到主窗口,向窗口发送文本消息(这种方法在vc下使用,在C#下如何操作,需要你自己查资料)
方法2:先向文件写入数据,然后再执行上面的代码,运行后效果差不多。
追问
我这样做的目的是不想先创建一个新文件,并且在保存的时候直接是另存为!
如果要是先创建一个新文件的时候,直接保存后,别人可能找不到该文件,成为垃圾文件!
追答
你最好把你的原始需求说一下,否则的话不好回答
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
内存信息 ? 是什么意思
cmd 是干呢?
cmd 是干呢?
追问
内存信息就是内存流
没有cmd直接 运行——notepad就可以了
追答
第一步: 引入命名空间
using System.Runtime.InteropServices;
using System.Diagnostics;
第二步: 声明Windows API(放在 class 内)
[DllImport("User32.DLL")]
public static extern int SendMessage(IntPtr hWnd, uint Msg, int wParam, string lParam);
[DllImport("User32.DLL")]
public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);
public const uint WM_SETTEXT = 0x000C;
第三步: 添加一个按钮,在按钮的点击事件中,写入下面的代码
Process vProcess = Process.Start("notepad.exe");
While (vProcess.MainWindowHandle == IntPtr.Zero) vProcess.Refresh();
IntPtr vHandle = FindWindowEx(vProcess.MainWindowHandle, IntPtr.Zero, "Edit", null);
SendMessage(vHandle, WM_SETTEXT, 0, "写入的内容");
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |