Как найти окно списка переходов?
Как получить окно списка переходов Windows 7 через ::FindWindow
или же ::EnumWindows
?
Что это за класс или родитель?
Я не могу Spy++, потому что он исчезает, если теряет фокус.
Спасибо.
http://msdn.microsoft.com/en-us/library/windows/desktop/aa511446.aspx
2 ответа
Решение
Откройте Spy++, откройте список переходов, нажмите кнопку обновления на Spy++.
Вот способ, похожий на технику Spy++, найти его с помощью кода, как только он будет показан с помощью обработчика событий:
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, хотя я могу ошибаться.