如何通过::FindWindow
或::EnumWindows
获取Windows 7跳转列表窗口?
类(class)或家长是什么?
我不能 Spy++ 它,因为如果失去焦点它就会消失。
谢谢。
http://msdn.microsoft.com/en-us/library/windows/desktop/aa511446.aspx
最佳答案
这里有一种类似于 Spy++ 技术的方法,可以在使用事件 Hook 显示时立即通过代码找到它:
void CALLBACK WinEventProc(HWINEVENTHOOK, DWORD, HWND hwnd, LONG, LONG, DWORD, DWORD) {
std::wstring className(256, L'\0');
std::wstring windowText;
windowText.resize(GetWindowTextLengthW(hwnd) + 1);
GetWindowTextW(hwnd, &windowText[0], windowText.size());
windowText = windowText.c_str();
GetClassNameW(hwnd, &className[0], className.size());
className = className.c_str();
std::wcout << "Class: \"" << className << "\"\n";
std::wcout << "Window: \"" << windowText << "\"\n";
}
int main() {
HWINEVENTHOOK hWinEventHook = SetWinEventHook(
EVENT_OBJECT_SHOW, EVENT_OBJECT_SHOW,
nullptr, WinEventProc,
0, 0,
WINEVENT_OUTOFCONTEXT | WINEVENT_SKIPOWNPROCESS
);
MSG msg;
while (GetMessage(&msg, nullptr, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
if (hWinEventHook) {
UnhookWinEvent(hWinEventHook);
}
}
随着每个窗口的显示,它出现在控制台(或当时的任何标准输出)中输出为 DV2ControlHost
的类名和 Jump List
的文本。但是,如果您想与之交互,我相信还有一个更加结构化的 API,尽管我可能错了。
关于c++ - 如何找到跳转列表窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16823634/