gpt4 book ai didi

c++ - Windows 2000 的 GetProcessID 的替代方法

转载 作者:可可西里 更新时间:2023-11-01 13:50:55 24 4
gpt4 key购买 nike

我使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com