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