gpt4 book ai didi

c++ - 如何在 Windows XP 中获取快速启动栏的大小?

转载 作者:行者123 更新时间:2023-11-28 07:53:18 26 4
gpt4 key购买 nike

我想获取快速启动栏的大小,但我的代码返回 false,问题出在哪里?

REBARBANDINFOW prbi;
memset(&prbi, 0, sizeof(REBARBANDINFOW));

prbi.cbSize = sizeof(REBARBANDINFOW);
prbi.fMask = 892;

HWND hWndTray = ::FindWindow(L"Shell_TrayWnd", 0);
HWND hRebar = ::FindWindowEx(hWndTray, NULL, L"ReBarWindow32", 0);
int i = ::SendMessage(hRebar, RB_GETBANDINFOW, 0, (LPARAM)(LPREBARBANDINFOW)&prbi);

最佳答案

问题出在 RB_GETBANDINFOW 的 LPARAM 上。您发送的结构地址仅在您自己的地址空间中有效,在资源管理器的地址空间中无效。幸运的是,资源管理器检测到这一点并优雅地失败而不是爆炸。

解决方法是使用VirtualAllocEx在Explorer的内存中分配REBARBANDINFOW,使用WriteProcessMemory对其进行初始化,发送消息,最后调用ReadProcessMemory读取结果。

我已经在 Python 脚本中成功地使用了这种技术来自动设置快速启动的大小。

关于c++ - 如何在 Windows XP 中获取快速启动栏的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13268746/

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