Get PID from ShellExecute

Get PID from ShellExecute

本文关键字:ShellExecute from PID Get      更新时间:2023-10-16

我正在从ShellExecuteEx启动一个进程,我真的需要获得ProcessID(这是该类需求的一部分)。

所有重要的SHELLEXECUTEINFO返回null。例如,如果我使用以下代码:

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)。

有谁能指出我的错误吗?谢谢。

您需要在exInfo.fMask

中设置一个标志(SEE_MASK_NOCLOSEPROCESS)