如何在c#中管理外部Windows应用程序
本文关键字:外部 Windows 应用程序 管理 | 更新日期: 2023-09-27 18:08:40
用c#(或。net)管理外部windows应用程序的最佳方法是什么?
到目前为止,我已经能够使用System.Diagnostics启动一个进程。进程,但是,这只是允许我启动/终止进程。(从我收集到的)我注意到System.Diagnostics.Process有一个CloseMainWindow()例程,它将向进程窗口发送请求。我可以使用这个Process类发送不同的消息吗?(如果有的话,谁能告诉我在哪里可以了解这些windows消息)
我需要能够管理外部程序并以以下方式操作它:1)启动2) Kill Process3)显示应用程序(全屏和任务栏)4)隐藏应用程序(全屏和任务栏)
更多细节:Windows 7,仅限于。net 3.5框架
您可以使用interop并使用SendMessage来完成所有的功能。参见:http://pinvoke.net/default.aspx/user32.SendMessage
尝试向该窗口发送消息。看看SendMessage
。您需要的消息是SW_MINIMIZE
、SW_RESTORE
和SW_SHOWMAXIMIZED
。
你将需要使用一些Win32 p/Invoke的东西来发送窗口消息,以便做你想做的。
查看ShowWindow或SendMessage的代码示例,它们告诉外部窗口显示或隐藏自己。你首先需要用findwindowwex获得你想要的窗口句柄。
你可以用不同的方式做你想做的一切,一旦你自己启动进程,或者你在运行进程列表中找到它,使用System.Diagnostics.Process
的类或方法,然后你可以遵循不同的选项…
Process.MainWindowHandle
,你可以发送消息到这个句柄,SendMessage
和PostMessage
,这允许你做非常非常多;或者你可以使用像SetWindowPos
或ShowWindow
或SetWindowLong
这样的PInvoke api,基本上可以做所有事情……
请看下面的例子:
如何使用ShowWindow API来隐藏和显示表单
我可以给你发送更多的链接,但不喜欢引用整个MSDN;-)