2013-05-29 7 views

ответ

2

Open шпионского ++, открытый список прыжка, нажмите кнопку обновления на шпионе ++.

Jump list

+0

Это полезно. – chris

+0

Это работает только в том случае, если вы уже знаете, что искать :). Инструмент «Поиск окна шпиона» удаляет фокус из списка переходов и закрывается. Благодарю. –

+0

Собственно, найдите поиск в текущем списке, поэтому вам нужно его обновить, и пока вы это сделаете, пока окно перехода еще отображается, вы сможете его найти. – riv

2

Вот способ, похожий на технику 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); 
    } 
} 

Как показано каждое окно, оно появляется в консоль (или любой другой файл stdout в данный момент) выводится как имя класса DV2ControlHost и текст Jump List. Однако, если вы хотите взаимодействовать с ним, я считаю, что существует гораздо более структурированный API, хотя я могу ошибаться.

+1

Полезно. Благодарю. –