gpt4 book ai didi

c++ - 如何获取 Windows 7 中“开始”按钮的句柄?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:26:10 28 4
gpt4 key购买 nike

我使用:

Hwnd hStart = ::FindWindow ("Shell_TrayWnd",NULL);  // get HWND of taskbar first
hStart = ::FindWindowEx (hStart, NULL,"BUTTON", NULL); // get HWND of start button

获取开始按钮的句柄。它在 Windows XP 上正常运行,但在 Windows 7 中,::FindWindowEx (hStart, NULL,"BUTTON", NULL) 始终返回 0,而 GetLastError() 也返回 0。

这是为什么?

最佳答案

在 Windows 7 中,具有类名 "Button" 的开始按钮是桌面窗口的子项。您的代码假定开始按钮是名为 "Shell_TrayWnd" 的窗口的子窗口,这确实看起来是任务栏和开始菜单在 XP 上的实现方式。

对于 Windows 7,你想使用这样的东西:

hStart = ::FindWindowEx(GetDesktopWindow(), NULL, "Button", NULL);

虽然我认为按名称搜索它会更好,以确保您找到正确的按钮。

hStart = ::FindWindowEx(GetDesktopWindow(), NULL, "Button", "Start");

我不确定 Vista 如何实现其任务栏和开始菜单,但您可以使用 Spy++ 来了解一下。

综上所述,如果您能找到一种方法来实现您的目标,而无需仔细研究此类实现的具体细节,那就更好了。

关于c++ - 如何获取 Windows 7 中“开始”按钮的句柄?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9569620/

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