vc++如何找到程序在系统任务栏(WinToolBar:运行应用程序)中图标的位置?
运行程序后(无论是否最小化),会在window状态栏出现一个图标,并包含部分标题(不是右下角日期时间旁边那个小图标),如何找到这个图标的坐标?因为该坐标并不固定,已运行程...
运行程序后(无论是否最小化),会在window状态栏出现一个图标,并包含部分标题(不是右下角日期时间旁边那个小图标),如何找到这个图标的坐标?因为该坐标并不固定,已运行程序多少,次序都会有影响。运行程序少时,包含的标题多,图标长,运行程序多是,就变得很短。
因为是自动化测试时使用,所以不能人工参与。
目前使用图形识别来处理,但不是非常可靠,是否有API可以解决? 展开
因为是自动化测试时使用,所以不能人工参与。
目前使用图形识别来处理,但不是非常可靠,是否有API可以解决? 展开
1个回答
展开全部
win7及以上系统,可以使用:
Shell_NotifyIconGetRect
这个函数获取到系统托盘中某个图标的位置。
XP系统好像不行。
Shell_NotifyIconGetRect
这个函数获取到系统托盘中某个图标的位置。
XP系统好像不行。
更多追问追答
追问
谢谢,Shell_NotifyIcon系列函数是系统托盘的,即:WinToolBar:通知区域,在底部状态栏右边区域,我说的是WinToolBar:“运行应用程序”,在底部状态栏中间区域。
整个分布是:
开始菜单---快捷图标(Quick Launch)----运行应用程序---通知区域--时钟
追答
哦,任务栏上的运行图标吧。
这个,在XP/2003和以前的系统应该不好办,和托盘区一样,之前的系统中单独的图标不是窗口。win7之后,你可以用SPY++工具看看,只要单个图标是窗口就好办了,从顶层窗口获取任务栏(::FindWindow(_T("Shell_TrayWnd")。。。),之后遍历子窗口,只要图标是窗口,都可以通过GetWindowRect获取指定窗口的屏幕位置。我这没环境没法试验,你可以尝试一下。如果图标不是窗口,恐怕就没什么简单办法了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询