首页 > 解决方案 > 检查窗口标题

问题描述

您好,我正在创建检查打开的窗口名称的程序,但目前它每秒检查 100 次,我想在每次窗口更改时检查它。我知道它可能是因为无限循环。但我是 C++ 的新手,我不知道该怎么做,有人可以帮助我吗?

    char wnd_title[256];
    while(1) {
        HWND hwnd=GetForegroundWindow();
        GetWindowText(hwnd,wnd_title,sizeof(wnd_title));
        cout << wnd_title;
    }

此致。

标签: c++loopswinapi

解决方案


您可以做几件事来实现这一目标:

最佳(感谢评论中的 Remy):“另一种选择是用于SetWinEventHook()监听EVENT_OBJECT_NAMECHANGE事件。这比拦截WM_SETTEXT消息“更有希望”,并且比“渗透”更不具有侵入性。”

  • 简单而无聊(而且它似乎不是你真正想要的):为请求设置一个计时器,以便在更长的时间内调用它
  • 可能是最有希望的一个:使用 WH_GETMESSAGE 设置一个Window 挂钩来侦听从SetWindowTextA函数发送的 WM_SETTEXT
  • 或者完全发疯并创建远程线程并用可信赖的间谍渗透你的敌人。

推荐阅读