在C#(或.NET)中管理外部Windows应用程序的最佳方法是什么?
到目前为止,我已经能够使用System.Diagnostics.Process启动进程,但这只是允许我启动/终止进程。 (从我收集的内容)
我注意到System.Diagnostics.Process有一个CloseMainWindow()例程,它将向进程窗口发送请求。我可以使用此Process类发送不同的消息吗? (如果是这样,任何人都可以指出我可以了解这些Windows消息的方向)
我需要能够管理外部程序并通过以下方式对其进行操作: 1)发射 2)杀戮过程 3)显示应用程序(全屏和任务栏) 4)隐藏应用程序(全屏和任务栏)
进一步详情: Windows 7,受限于.Net 3.5 Framework
答案 0 :(得分:2)
您可以使用互操作并使用SendMessage来完成所有功能。请参阅:http://pinvoke.net/default.aspx/user32.SendMessage
答案 1 :(得分:0)
尝试向该窗口发送消息。看看SendMessage
。您需要的邮件是SW_MINIMIZE
,SW_RESTORE
和SW_SHOWMAXIMIZED
。
答案 2 :(得分:0)
你需要使用一些Win32 P / Invoke来发送窗口消息,以便做你想做的事。
在ShowWindow或SendMessage上查看此代码示例,告知外部窗口显示或隐藏自身。您首先需要使用FindWindowEx获取所需的窗口句柄。
答案 3 :(得分:0)
你可以用不同的方式做你想做的一切,一旦你自己开始这个过程,或者你在运行过程列表中找到它,使用System.Diagnostics.Process
的类或方法,那么你可以遵循不同的选择......
例如,假设您拥有此句柄:Process.MainWindowHandle
,您可以使用SendMessage
和PostMessage
向该句柄发送消息,这样您就可以做得非常多;或者您可以使用PInvoke API,例如SetWindowPos
或ShowWindow
或SetWindowLong
,并且基本上可以做所有事情......
见例如:
How to use the ShowWindow API to hide and show a form
我可以向您发送更多链接,但不想参考整个MSDN; - )