Как мне управлять внешним приложением Windows в C #? - PullRequest
4 голосов
/ 14 сентября 2011

Каков наилучший способ управления внешним приложением Windows в C # (или .NET)?

До сих пор я был в состоянии запустить процесс с использованием System.Diagnostics.Process, однако это простопозволяет мне запустить / убить процесс.(из того, что я собрал)

Я заметил, что System.Diagnostics.Process имеет подпрограмму CloseMainWindow (), которая отправляет запрос окну процесса.Могу ли я использовать этот класс Process для отправки разных сообщений?(если так, может кто-нибудь указать мне, где я могу узнать об этих сообщениях Windows)

Мне нужно иметь возможность управлять внешней программой и управлять ею следующими способами: 1) Запустить 2) Kill Process3) Показать приложение (в полноэкранном режиме и в панели задач) 4) Скрыть приложение (в полноэкранном режиме и в панели задач)

Дополнительные сведения: Windows 7, только для .Net 3.5 Framework

Ответы [ 4 ]

2 голосов
/ 14 сентября 2011

Вы можете использовать взаимодействие и использовать SendMessage для выполнения всех ваших функций. Смотрите это: http://pinvoke.net/default.aspx/user32.SendMessage

0 голосов
/ 14 сентября 2011

вы можете делать все, что вы хотите, по-разному, как только вы запустите процесс самостоятельно или найдете его в списке запущенных процессов, используя классы или методы System.Diagnostics.Process, тогда вы можете следовать различным опциям ...

например, учтите, что когда у вас есть этот дескриптор: Process.MainWindowHandle вы можете отправлять сообщения этому дескриптору с SendMessage и PostMessage, и это позволяет вам делать очень-очень много;или вы можете использовать API-интерфейсы PInvoke, такие как SetWindowPos или ShowWindow или SetWindowLong, и делать в основном действительно все ...

см. это, например, следующим образом:

Как использоватьShowWindow API для скрытия и отображения формы

Я могу отправить вам больше ссылок, но не буду ссылаться на весь MSDN; -)

0 голосов
/ 14 сентября 2011

Вам нужно будет использовать некоторые вещи Win32 P / Invoke для отправки оконных сообщений, чтобы делать то, что вы хотите.

См. Этот пример кода в ShowWindow или SendMessage , который сообщает внешнему окну показать или скрыть себя. Сначала вам нужно получить нужный дескриптор окна с помощью FindWindowEx .

0 голосов
/ 14 сентября 2011

Попробуйте отправить сообщение в это окно. Посмотрите на SendMessage. Вам нужны сообщения SW_MINIMIZE, SW_RESTORE и SW_SHOWMAXIMIZED.

...