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

不知何故,所有重要的 SHELLEXECUTEINFO 都返回 null。
例如,如果我使用此代码:

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

ShellExecuteExA(exInfo);

它启动了 CMD.exe。但现在我需要得到它的PID。
exInfo.hwnd 返回 0exInfo.hProcess 返回 null
这是正常行为吗?

我真的不想诉诸于使用 CreateProcess(),因为我的函数还应该能够启动像“C:\doc1.docx”这样的文档。这只是一种方法,我无法预测将要启动的内容(因此我无法事先知道窗口标题/类名,从那里获取 hWnd,然后获取 PID)。

有人可以指出我的错误吗?谢谢。

最佳答案

您需要在 exInfo.fMask 中设置一个标志 (SEE_MASK_NOCLOSEPROCESS)

关于c++ - 从 ShellExecute 获取 PID,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7620322/

10-14 09:10