如何在C#中管理外部Windows应用程序?

时间:2011-09-14 19:13:20

标签: c# .net system.diagnostics

在C#(或.NET)中管理外部Windows应用程序的最佳方法是什么?

到目前为止,我已经能够使用System.Diagnostics.Process启动进程,但这只是允许我启动/终止进程。 (从我收集的内容)

我注意到System.Diagnostics.Process有一个CloseMainWindow()例程,它将向进程窗口发送请求。我可以使用此Process类发送不同的消息吗? (如果是这样,任何人都可以指出我可以了解这些Windows消息的方向)

我需要能够管理外部程序并通过以下方式对其进行操作: 1)发射 2)杀戮过程 3)显示应用程序(全屏和任务栏) 4)隐藏应用程序(全屏和任务栏)

进一步详情: Windows 7,受限于.Net 3.5 Framework

4 个答案:

答案 0 :(得分:2)

您可以使用互操作并使用SendMessage来完成所有功能。请参阅:http://pinvoke.net/default.aspx/user32.SendMessage

答案 1 :(得分:0)

尝试向该窗口发送消息。看看SendMessage。您需要的邮件是SW_MINIMIZESW_RESTORESW_SHOWMAXIMIZED

答案 2 :(得分:0)

你需要使用一些Win32 P / Invoke来发送窗口消息,以便做你想做的事。

ShowWindowSendMessage上查看此代码示例,告知外部窗口显示或隐藏自身。您首先需要使用FindWindowEx获取所需的窗口句柄。

答案 3 :(得分:0)

你可以用不同的方式做你想做的一切,一旦你自己开始这个过程,或者你在运行过程列表中找到它,使用System.Diagnostics.Process的类或方法,那么你可以遵循不同的选择......

例如,假设您拥有此句柄:Process.MainWindowHandle,您可以使用SendMessagePostMessage向该句柄发送消息,这样您就可以做得非常多;或者您可以使用PInvoke API,例如SetWindowPosShowWindowSetWindowLong,并且基本上可以做所有事情......

见例如:

How to use the ShowWindow API to hide and show a form

我可以向您发送更多链接,但不想参考整个MSDN; - )