c#从c#exe文件中添加或读取
是否可以从另一个c#项目(Windows窗体)打开ac #exe文件(控制台应用程序)并从exe文件中写入或读取不同的文本值? 我正在使用user32dll来处理exe文件。
我确实使用此方法在exe文件中添加文本:
Clipboard.SetText("Message!"); foreach (IntPtr pPost in pControls) { PostMessage(pPost, (uint)WindowMessage.WM_PASTE, 0, 0); }
但是没有用。 我没有在c#exe中添加“消息”post(这是一个控制台应用程序)。 你使用notepad.exe每个工作正常。
您可以使用Process
类来执行命令行应用程序,并使用StandardInput
和StandardOutput
属性重定向输入/输出。
来自MSDN:
Process p = new Process(); p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.FileName = "Write500Lines.exe"; p.Start(); string output = p.StandardOutput.ReadToEnd(); p.WaitForExit();
上面链接的StandardOutput
页面上有更多示例。
这里有大量可能的故障模式。
- 首先,发送WM_PASTE,而不是发布,你应该使用SendMessage()。
- 只有有限数量的Windows控件实际上实现了此消息的行为,它必须是编辑控件,丰富的编辑控件或combobox。
- 有UIPI,UAC的用户界面部分,它阻止了一个未被劫持的高级进程的特权。
- 做这样的事情是有用的,在每个子窗口中粘贴文本都没有多大意义。
- 您用于PostMessage()的pinvoke声明不正确,wparam和lparam参数是IntPtr,而不是int。
访问pinvoke.net以获取(通常)正确的pinvoke声明。