vc++如何找到程序在系统任务栏(WinToolBar:运行应用程序)中图标的位置?

运行程序后(无论是否最小化),会在window状态栏出现一个图标,并包含部分标题(不是右下角日期时间旁边那个小图标),如何找到这个图标的坐标?因为该坐标并不固定,已运行程... 运行程序后(无论是否最小化),会在window状态栏出现一个图标,并包含部分标题(不是右下角日期时间旁边那个小图标),如何找到这个图标的坐标?因为该坐标并不固定,已运行程序多少,次序都会有影响。运行程序少时,包含的标题多,图标长,运行程序多是,就变得很短。
因为是自动化测试时使用,所以不能人工参与。
目前使用图形识别来处理,但不是非常可靠,是否有API可以解决?
展开
 我来答
bhtzu
2014-06-25 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4193万
展开全部
win7及以上系统,可以使用:
Shell_NotifyIconGetRect
这个函数获取到系统托盘中某个图标的位置。
XP系统好像不行。
更多追问追答
追问
谢谢,Shell_NotifyIcon系列函数是系统托盘的,即:WinToolBar:通知区域,在底部状态栏右边区域,我说的是WinToolBar:“运行应用程序”,在底部状态栏中间区域。
整个分布是:

开始菜单---快捷图标(Quick Launch)----运行应用程序---通知区域--时钟
追答
哦,任务栏上的运行图标吧。
这个,在XP/2003和以前的系统应该不好办,和托盘区一样,之前的系统中单独的图标不是窗口。win7之后,你可以用SPY++工具看看,只要单个图标是窗口就好办了,从顶层窗口获取任务栏(::FindWindow(_T("Shell_TrayWnd")。。。),之后遍历子窗口,只要图标是窗口,都可以通过GetWindowRect获取指定窗口的屏幕位置。我这没环境没法试验,你可以尝试一下。如果图标不是窗口,恐怕就没什么简单办法了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式