Как найти окно списка переходов?

Как получить окно списка переходов 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, хотя я могу ошибаться.

Другие вопросы по тегам