我使用 GetProcessID 不小心从应用程序中删除了 Win2K 兼容性.
我这样使用它,以获取已启动应用程序的主要 HWND。
ShellExecuteEx(&info); // Launch application
HANDLE han = info.hProcess; // Get process
cbinfo.han = han;
//Call EnumWindows to enumerate windows....
//with this as the callback
static BOOL CALLBACK enumproc(HWND hwnd, LPARAM lParam)
{
DWORD id;
GetWIndowThreadProcessID(hwnd, &id);
if (id == GetProcessID(cbinfo.han))
setResult(hwnd)
...
}
知道如何在 Win2K 上实现相同的功能吗?
最佳答案
有一个“不受支持的”函数:ZwQueryInformationProcess():参见
http://msdn.microsoft.com/en-us/library/ms687420.aspx
在给定句柄的情况下,这将为您提供进程 ID(以及其他信息)。这不能保证适用于 future 的 Windows 版本,因此我建议使用一个辅助函数来测试操作系统版本,然后使用 GetProcAddress() 调用 GetProcessId() 用于 XP 及更高版本,以及 ZwQueryInformationProcess() 仅用于 Win2K .
关于c++ - Windows 2000 的 GetProcessID 的替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/272036/