[英]How do I manage an external Windows application in C#?
在C#(或.NET)中管理外部Windows應用程序的最佳方法是什么?
到目前為止,我已經能夠使用System.Diagnostics.Process啟動一個進程,但是,這僅允許我啟動/殺死一個進程。 (根據我收集的信息)
我注意到System.Diagnostics.Process有一個CloseMainWindow()例程,該例程會將請求發送到進程的窗口。 我可以使用此Process類發送不同的消息嗎? (如果是這樣,任何人都可以指出我可以了解這些Windows消息的方向)
我需要能夠管理外部程序並通過以下方式對其進行操作:1)啟動2)終止進程3)顯示應用程序(全屏並在任務欄中)4)隱藏應用程序(全屏並在任務欄中)
更多詳細信息:Windows 7,僅限於.Net 3.5 Framework
您可能可以使用互操作並使用SendMessage來完成所有功能。 看到這個: http : //pinvoke.net/default.aspx/user32.SendMessage
嘗試向該窗口發送消息。 看一下SendMessage
。 您需要的消息是SW_MINIMIZE
, SW_RESTORE
和SW_SHOWMAXIMIZED
。
您將需要使用一些Win32 P / Invoke來發送窗口消息,以執行所需的操作。
請參閱ShowWindow或SendMessage上的此代碼示例,該示例告訴外部窗口顯示或隱藏自身。 首先,您需要使用FindWindowEx獲取所需的窗口句柄。
您可以使用System.Diagnostics.Process
類或方法以自己的方式啟動流程或在運行的流程列表中找到所需的內容,以不同的方式進行操作,然后可以使用不同的選項...
例如,考慮一下一旦擁有以下句柄: Process.MainWindowHandle
您可以使用SendMessage
和PostMessage
將消息發送到該句柄,這使您可以做很多事情; 或者您可以使用諸如SetWindowPos
或ShowWindow
或SetWindowLong
類的PInvoke API並基本上完成所有操作...
例如:
我可以向您發送更多鏈接,但不希望引用整個MSDN ;-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.