(Win Api)检查任务栏上是否有外部应用程序窗口

时间:2009-06-27 16:12:07

标签: winapi api taskbar

我想知道是否可以知道外部应用程序是否有一个窗口显示在任务栏上。我有一个程序,有时会显示一条错误消息,它出现在任务栏上。如果我“关闭”消息,它将变得不可见,但从我所看到它仍然存在。因此,我知道该窗口是否可见并因此“可点击”的唯一方法是检查它是否显示在任务栏上。

我该怎么做?

由于

2 个答案:

答案 0 :(得分:0)

首先使用spy ++(随visual studio一起提供)查找类名,窗口名和窗口层次结构。提示:当屏幕上显示错误消息时,运行spy ++,按Alt + F3,然后按Alt + D,然后将查找工具放入错误消息窗口,然后按确定。

如果窗口是顶级(即其父级是桌面),则使用FindWindow API

如果窗口不是顶层(即其父窗口是其他窗口),则首先使用FindWindow查找主窗口,然后使用FindWindowEx(可能递归)搜索该错误消息窗口。

答案 1 :(得分:0)

用于管理任务栏的文档化COM接口是ITaskbarList,但它只允许您添加/删除按钮,无法获取列表现有按钮。

所以,你有三个选择:

A)进入未记录的土地,找到任务栏及其子选项卡控件或工具栏(从2000更改为XP)并查看其未记录的每个项目数据(IIRC有一个开源更改任务栏按钮订单应用程序在那里这个信息)

B)检查你关心的窗口的样式(WS_VISIBLE和(没有所有者或WS_EX_APPWINDOW)而不是WS_EX_TOOLWINDOW)或者那些行的东西

C)将已损坏的应用程序挂钩/子类化