【发布时间】:2011-10-01 12:53:26
【问题描述】:
我正在从 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)。
有人能指出我的错误吗?谢谢。
【问题讨论】:
-
您能否进一步解释一下如何从 ShellExecuteInfo 获取 PID,因为我自己也在寻找一种方法。
-
DWORD PID = GetProcessId(exInfo.hProcess);这是我目前正在使用的。谢谢。
标签: c++ windows winapi java-native-interface jna