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

如何在C#中管理外部Windows应用程序?,c#,.net,system.diagnostics,C#,.net,System.diagnostics,在C#(或.NET)中管理外部windows应用程序的最佳方法是什么 到目前为止,我已经能够使用System.Diagnostics.process启动一个进程,但是这只允许我启动/终止一个进程。(根据我收集的信息) 我注意到System.Diagnostics.Process有一个CloseMainWindow()例程,它将向进程的窗口发送请求。我可以使用此Process类发送不同的消息吗?(如果是,有人能告诉我在哪里可以了解这些windows消息吗) 我需要能够管理外部程序并通过以下方式操作

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

到目前为止,我已经能够使用System.Diagnostics.process启动一个进程,但是这只允许我启动/终止一个进程。(根据我收集的信息)

我注意到System.Diagnostics.Process有一个CloseMainWindow()例程,它将向进程的窗口发送请求。我可以使用此Process类发送不同的消息吗?(如果是,有人能告诉我在哪里可以了解这些windows消息吗)

我需要能够管理外部程序并通过以下方式操作它: 1) 发射 2) 压井工艺 3) 显示应用程序(全屏和任务栏) 4) 隐藏应用程序(全屏和任务栏中)

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

您可以使用interop和SendMessage来完成所有功能。请参见:

尝试向该窗口发送消息。查看
SendMessage
。您需要的消息是
SW\u MINIMIZE
SW\u RESTORE
SW\u showmized
,您需要使用一些Win32 p/Invoke工具来发送窗口消息,以便执行您想要的操作


请参阅或上的此代码示例,它告诉外部窗口显示或隐藏自身。您首先需要获得所需的窗口句柄。

您可以通过不同的方式完成所有需要的操作,一旦您自己启动流程或在运行流程列表中找到流程,使用
System.Diagnostics.process
的类或方法,然后您可以遵循不同的选项

例如,考虑一旦你有这个句柄:<代码>进程。MainWindowHandle < /C> >你可以发送消息到那个句柄,用<代码> sEndidie和<代码> PaseMedis<代码>,这样你就可以做得非常多了;或者您可以使用PInvoke API,如

SetWindowPos
ShowWindow
SetWindowLong
,基本上完成所有操作

请参见以下示例:

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