【发布时间】:2016-04-12 07:40:56
【问题描述】:
我正在尝试获取 SHELLDLL_DefView 的句柄。
所以,我有这个代码。
HWND hProgman = FindWindow(L"Progman", NULL);
HWND hWnd = FindWindowEx(hProgman, 0, L"SHELLDLL_DefView", NULL);
Eveyrtihing 工作正常,直到我将 Windows 桌面背景更改为幻灯片。然后,当我使用窗口的 spy++ 层次结构搜索时,SHELLDLL_DefView 有另一个父级。现在是#32769(桌面)-> WorkerW -> SHELLDLL_DefView。所以我找不到它。问题是当我尝试时
HWND desktop = GetDesktopWindow();
HWND hWnd = FindWindowEx(desktop , 0, L"WorkerW", NULL);
HWND hWnd = FindWindowEx(hWnd, 0, L"SHELLDLL_DefView", NULL);
没有找到比 SHELLDLL_DefView。 WorkerW 是的。
有人可以帮忙吗?
【问题讨论】:
-
为什么需要找到这个?该外壳具有丰富的自动化接口。您是否评估过它不符合您的要求?
-
我需要完成 SHELLDLL_DefView 的句柄
-
“我需要找到 X,因为我需要找到 X” 不是问题的答案,为什么你认为你会这样做。
-
我在下面给出答案,如何解决我的问题。
-
但是,一旦拥有了 HWND,您将如何处理它?您在这里要达到的最终目标是什么?通常情况下,与 shell 交互比通过随机窗口句柄更好的方式。