2015-03-30 1 views
2

Есть ли способ в .NET получить идентификатор процесса (или только Process) программы, выполняющей вызов?.NET получить идентификатор процесса моего приложения в C#

Process.GetCurrentProcess() получает Process, который в настоящее время активен, то есть тот, который пользователь использует прямо сейчас. Мне нужно Process моего собственного приложения, которое, вероятно, неактивно в то время, когда я его вызываю.

Я мог бы позвонить GetCurrentProcess() по адресу Window.Activated и сохранить его в закрытом поле, но нет абсолютной гарантии (я считаю), что это событие когда-нибудь будет срабатывать, если приложение откроется в фоновом режиме.

ответ

1

Вы ошибаетесь .. GetCurrentProcess возвращается:

новый компонент процесса, связанный с процессом ресурса, на котором выполняется приложение вызова.

Он не (обязательно) возвращает процесс, связанный с текущим активным окном.

Когда документы относятся к «активному» процессу, это означает текущий выполняемый процесс, то есть вызывающий процесс. Активное окно может или не может принадлежать активному процессу, поскольку, конечно, процесс может выполняться без использования окна переднего плана или любого окна.

+0

Это тот же вызов, что и объект .NET Process? То есть .NET-процесс Process.GetCurrentProcess() - просто оболочка этого COM-сервера? Я использовал Process.GetCurrentProcess(), чтобы разрешить мне активировать свое приложение, а затем немедленно активировать активную. – dfoverdx

+0

Извините, неверная ссылка - исправлена. Я цитирую MSDN в Process.GetCurrentProcess. – Blorgbeard

+0

Но да, нативный вызов делает то же самое. – Blorgbeard

Смежные вопросы