Получить PID от ShellExecute - PullRequest
       28

Получить PID от ShellExecute

3 голосов
/ 01 октября 2011

Я запускаю процесс из ShellExecuteEx, и мне действительно нужно получить ProcessID (это часть требований этого класса).

Каким-то образом все важные SHELLEXECUTEINFO возвращают ноль. Так, например, если я использую этот код:

exInfo.lpVerb = "open";
exInfo.lpFile = "C:\\Windows\\system32\\cmd.exe";
exInfo.nShow  = 5;

ShellExecuteExA(exInfo);

Запустил CMD.exe. Но теперь мне нужно получить его PID. exInfo.hwnd возвращает 0, а exInfo.hProcess возвращает null. Это нормальное поведение?

На самом деле я не хочу прибегать к использованию CreateProcess (), потому что моя функция также должна иметь возможность запускать документы типа "C: \ doc1.docx". Это просто метод, в котором я не могу предсказать, что будет запущено (поэтому я не могу заранее знать заголовок / имя класса окна, получить hWnd оттуда и затем получить PID).

Может ли кто-нибудь любезно указать на мою ошибку? Спасибо.

1 Ответ

1 голос
/ 01 октября 2011

Вам необходимо установить флаг (SEE_MASK_NOCLOSEPROCESS) в exInfo.fMask

...