本文介绍了EnumWindows 不检测窗口的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用 EnumWindows 打印出所有可见窗口的标题.

I am trying to use EnumWindows to print out the titles of all visible windows.

一开始它可以工作,EnumWindows 每次调用 EnumWindows 都会多次调用回调函数 createWindow().但是没有添加任何有意义的代码,它停止工作,现在只使用不可见窗口的句柄调用 createWindow() 一次.

It was working at first, EnumWindows was calling the callback function createWindow() multiple times with each call of EnumWindows. But without adding any meaningful code it stopped working and now only calls createWindow() once with a handle of a not visible window.

这是我的代码:

int main()
{
    int row = 2;
    int col = 2;

    vector<Window> detectedWindows((row * col) + 4);

    EnumWindows(&createWindow, (LPARAM)&detectedWindows);
}

BOOL CALLBACK createWindow(HWND input, LPARAM storage)
{
    if (IsWindowVisible(input))
    {
        TCHAR titleTchar[30];

        GetWindowText(input, titleTchar, 30);

        wcout << titleTchar << endl;

        CString titleCstr = titleTchar;
        CT2CA converting(titleCstr);
        string title(converting);

        cout << title << endl;
    }
    return 0;
}

没有记录的错误消息.GetLastError 返回 0.

There are no recorded error messages. GetLastError returns 0.

推荐答案

你的回调返回 FALSE 所以 EnumWindows() 停止枚举窗口.让它返回 TRUE 代替.

Your callback returns FALSE so EnumWindows() stops enumerating windows. Have it return TRUE instead.

这篇关于EnumWindows 不检测窗口的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-16 20:34