c++ - 如何找到跳转列表窗口?

标签 c++ windows windows-7 aero taskbar

如何通过::FindWindow::EnumWindows获取Windows 7跳转列表窗口?

类(class)或家长是什么?

我不能 Spy++ 它,因为如果失去焦点它就会消失。

谢谢。

Jump list

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/

相关文章:

windows-7 - Qt QLineEdit 小部件使长文本左对齐

c++ - 使用重载的下标运算符赋值

java - Windows 将 JDK 位置引用保存在哪里?

windows - TCP 调整的资源和工具

c++ - 无法在C++ Windows上打开.txt文件

linux - 无法从同一 LAN 上的 Linux 计算机 ping Windows 7 计算机

c++ - 收到 C2660 错误,但调用发送了正确数量的参数

c++ - 服务器和多个客户端使用 pthreads 和 select()

c++ - 看完归并排序的理论,想写一个归并排序的实现,但是卡住了

git - 最新版Git-安装时没有SSH选项