如何在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框架

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

您可以使用interop并使用SendMessage来完成所有的功能。参见:http://pinvoke.net/default.aspx/user32.SendMessage

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

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

查看ShowWindow或SendMessage的代码示例,它们告诉外部窗口显示或隐藏自己。你首先需要用findwindowwex获得你想要的窗口句柄。

你可以用不同的方式做你想做的一切,一旦你自己启动进程,或者你在运行进程列表中找到它,使用System.Diagnostics.Process的类或方法,然后你可以遵循不同的选项…

例如,考虑一下,一旦你有了这个句柄:Process.MainWindowHandle,你可以发送消息到这个句柄,SendMessagePostMessage,这允许你做非常非常多;或者你可以使用像SetWindowPosShowWindowSetWindowLong这样的PInvoke api,基本上可以做所有事情……

请看下面的例子:

如何使用ShowWindow API来隐藏和显示表单

我可以给你发送更多的链接,但不喜欢引用整个MSDN;-)