首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何让EnumWindows列出所有窗口?

要使用EnumWindows函数列出所有窗口,您需要遵循以下步骤:

  1. 定义一个回调函数(Callback Function):

EnumWindows函数需要一个回调函数作为参数,该回调函数在枚举每个窗口时被调用。回调函数的原型如下:

代码语言:c++
复制
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam);

其中,hwnd参数表示当前枚举的窗口句柄,lParam参数是应用程序提供的任意值,用于传递额外的数据。

  1. 实现回调函数:

在回调函数中,您可以获取窗口的标题、类名等信息,并将它们存储在一个数据结构中,例如std::vector。

代码语言:c++
复制
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam) {
    // 获取窗口标题
    char title[256];
    GetWindowTextA(hwnd, title, sizeof(title));

    // 获取窗口类名
    char className[256];
    GetClassNameA(hwnd, className, sizeof(className));

    // 将窗口信息存储在数据结构中
    std::vector<HWND>* windows = reinterpret_cast<std::vector<HWND>*>(lParam);
    windows->push_back(hwnd);

    return TRUE; // 继续枚举下一个窗口
}
  1. 调用EnumWindows函数:

在主函数中,您可以调用EnumWindows函数,并传递回调函数的地址和一个指向数据结构的指针作为参数。

代码语言:c++
复制
int main() {
    std::vector<HWND> windows;
    EnumWindows(EnumWindowsProc, reinterpret_cast<LPARAM>(&windows));

    // 输出所有窗口句柄
    for (HWND hwnd : windows) {
        std::cout << "Window handle: " << hwnd<< std::endl;
    }

    return 0;
}

这样,您就可以使用EnumWindows函数列出所有窗口了。请注意,这个示例仅列出了窗口句柄,您可以根据需要获取其他窗口属性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

4分36秒

PS小白教程:如何在Photoshop中制作雨天玻璃文字效果?

领券