gpt4 book ai didi

winapi - GetAllTabInfo 用法?

转载 作者:行者123 更新时间:2023-12-03 17:07:10 38 4
gpt4 key购买 nike

我无法使用 GetAltTabInfo。可能是一个愚蠢的错误,但这有什么问题呢?

HWND taskSwitcher = FindWindow(L"TaskSwitcherWnd", L"Task Switching");
ALTTABINFO altTabInfo = {};
altTabInfo.cbSize = sizeof(ALTTABINFO);
GetAltTabInfo(taskSwitcher, -1, &altTabInfo, NULL, 0);

我已经验证过taskSwitcher是调用FindWindow之后的任务切换窗口(无论是否可见)。在调用 GetAltTabInfo 之后,altTabInfo 的所有字段都保持为 0,除了 cbSize 通过分配给 sizeof(ALTTABINFO) 设置为 40。我正在 Windows 7 机器上尝试这个。

提取窗口数量的替代方法?

谢谢

编辑:好的,我刚刚意识到我可能会收到一些错误信息。 GetAltTabInfo 调用的结果值确实是 0,如果我为 hwnd 参数指定 NULL(毕竟它被定义为 __in_opt),GetLastError 会给我 1400(无效的窗口句柄)或 1168(未找到元素)。所以我想我通过了错误的窗口。如果不是 FindWindow(L"TaskSwitcherWnd", L"Task Switching") 返回的那个,正确的是什么? MSDN 只告诉我有关“此窗口必须是应用程序切换窗口”的 hwnd 参数。

最佳答案

当您使用 Win32 API 函数时,您总是必须检查错误。 GetAltTabInfo 返回 BOOL,当它返回 FALSE 时调用 GetLastError():

BOOL ok = GetAltTabInfo(hWnd, -1, &altTabInfo, NULL, 0);
if (!ok) {
int err = GetLastError();
Log(err); // Or whatever you use
return false;
}

我认为您会看到错误 1400,“无效的窗口句柄”。在我的机器上,不接受 EnumWindows() 枚举的任何窗口句柄。我得出的结论是,当您启用 Aero 时,此 API 不再可用。我找不到对此的独立确认。

关于winapi - GetAllTabInfo 用法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4023013/

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