c++ - 在 C++ 中访问 Windows 任务栏图标

标签 c++ windows taskbar

我正在寻找一种方法来以编程方式获取任务栏中每个程序的当前任务栏图标(不是系统托盘)。

我在 MSDN 或 Google 上运气不太好,因为所有结果都与系统托盘有关。

任何建议或指示都会有所帮助。

编辑: 我尝试了 Keegan Hernandez 的想法,但我认为我可能做错了什么。代码如下(c++)。

#include <iostream>
#include <vector>
#include <windows.h>
#include <sstream>
using namespace std;
vector<string> xxx;
bool EnumWindowsProc(HWND hwnd,int ll)
{
    if(ll=0)
    {
        //...
        if(IsWindowVisible(hwnd)==true){
        char tyty[129];
        GetWindowText(hwnd,tyty,128);
        stringstream lmlm;
        lmlm<<tyty;
        xxx.push_back(lmlm.str());
        return TRUE;
        }
    }
}
int main()
{
    EnumWindows((WNDENUMPROC)EnumWindowsProc,0);
    vector<string>::iterator it;
    for(it=xxx.begin();it<xxx.end();it++)
    {cout<< *it <<endl;}
    bool empty;
    cin>>empty;
}

最佳答案

希望这足以让您入门:

WinAPI 有一个 EnumWindows 函数,它会为当前实例化的每个 HWND 调用一个回调函数。要使用它,请编写以下形式的回调:

BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam);

然后调用 EnumWindows(EnumWindowsProc, lParam),这样 API 就会为每个窗口调用您的回调,其中 hwnd 代表一个特定的窗口。

要确定每个窗口是否可见并因此在任务栏上,您可以在回调收到的每个 HWND 上使用函数 IsWindowVisible(HWND)。如果幸运的话,您可以从传递给该回调的 HWND 中获得您需要的任何其他信息。

关于c++ - 在 C++ 中访问 Windows 任务栏图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1169258/

相关文章:

c# - 检测应用程序是否固定到任务栏

c++ - 我如何 "override"CMake中文件的扩展类型

c++ - Azure IoT SDK C 设置 macOS (Mac OS X) 开发环境

.net - 当 .net 程序由于未捕获的异常而退出时,操作系统级别会发生什么情况?

c++ - Win32 C/C++ 检查同一程序的两个实例是否使用相同的参数

java - 在 java 中添加对 windows 任务栏的贡献 - 类似于笔记本电脑电池小部件

c++ - 如何在 Linux 中运行 C++ 中的可执行文件?

c++ - 函数原型(prototype)和枚举

windows - 我的盒子上的 Google SSL 证书有一个奇怪的问题

c++ - 在 QDialog 中使用 Popup 标志和模态在主窗口上自动聚焦于 QLineEdit