VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
查看: 1224|回复: 3

[求助] SHOWINTASKBAR =TRUE 时运行窗体会在任务栏显示小图标,如何得知该图标的坐标?

[复制链接]
发表于 2018-1-4 22:49:30 | 显示全部楼层 |阅读模式
本帖最后由 bruly 于 2018-1-4 22:57 编辑

请问老师:SHOWINTASKBAR =TRUE 时运行窗体,会在任务栏显示窗体小图标,如何得知该图标的坐标(注意:不是该窗体的坐标)?
敬谢~!
附:我目前的思路,是把鼠标移动到控件上得出,但求的是任务栏的坐标?却绝不是窗体在任务栏上的小图标的坐标:
  1. Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
  2. Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
  3. Private Type POINTAPI
  4.     x As Long
  5.     y As Long
  6. End Type
  7. Private Sub Timer1_Timer()
  8.     Dim a As POINTAPI
  9.     GetCursorPos a'把光标移动到想要求坐标的小图标上
  10.     b = WindowFromPoint(a.x, a.y)
  11.     Me.Caption = b
  12. End Sub
复制代码

发表于 2018-1-8 23:22:45 | 显示全部楼层
用spy++获取不到的,所以传统方式就别试了。用acc explorer能获取,所以可以用acc来实现。

评分

参与人数 1威望 +3 人气 +1 收起 理由
bruly + 3 + 1 赞一个怪不得如此。VB看来是没戏了。

查看全部评分

回复 支持 1 反对 0

使用道具 举报

发表于 2018-1-8 12:21:21 | 显示全部楼层
本帖最后由 jy4977596491 于 2018-1-8 12:24 编辑

任务栏的程序图标是Windows自身的,可以提供给你的一点思路:用FindWindow先得到任务栏的句柄,FindWindowEx查找其子窗口(类名:ToolbarWindow32),然后用SendMessage发消息给这个句柄,TBM_开头的消息,进行处理应该可以(可能要用到OpenProcess、ReadProcessMemory、VirtualAllocEx、VirtualFreeEx等API)

评分

参与人数 1威望 +8 人气 +1 收起 理由
bruly + 8 + 1 感谢您的耐心解答,我先去尝试一下。

查看全部评分

回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2018-1-8 20:00:20 | 显示全部楼层
jy4977596491 发表于 2018-1-8 12:21
任务栏的程序图标是Windows自身的,可以提供给你的一点思路:用FindWindow先得到任务栏的句柄,FindWindowE ...

您说的方法,我在发文之前已经试过,发现不成功:
先找出母窗体的句柄,再找出子窗体句柄,然后给它发消息,结果得到的不是任务栏上该图标的信息,而是该图标所表示的窗体的信息。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

文字版|手机版|小黑屋|VBGood  

GMT+8, 2018-10-17 03:12

VB爱好者乐园(VBGood)
快速回复 返回顶部 返回列表