首页
社区
课程
招聘
如何模拟鼠标向工具栏上的某个"按钮"发送鼠标单击消息?
发表于: 2006-5-9 21:57 9641

如何模拟鼠标向工具栏上的某个"按钮"发送鼠标单击消息?

2006-5-9 21:57
9641
我现在已经拿到工具栏的句柄.
存在的问题:
1. 如何发送这个消息?
::SendMessage(...)?
2.这个所谓的按钮如何在工具栏上定位它?
这里高手比较多,有人做过这样的事吗?能否指点一下?小弟非常感谢

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 44229
活跃值: (19965)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
是VC程序吧?你用资源工具先得到这个按钮的资源ID号,再用GetDlgItem得到这个按钮句柄,再用SendMessage发消息就可控制了。
2006-5-10 09:20
0
雪    币: 205
活跃值: (166)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
多谢看雪老大的支持,但被操作程序没有源代码
我也最多只能拿到它工具条的窗口句柄,工具条上那个类似按钮东西,好像不是按钮
2006-5-10 10:31
0
雪    币: 209
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
GetWindowThreadProcessId(hWnd,&dwProcessId); 取得那个程序的句柄
  ...
  一系列判断和排除等等..
  ...
::SendMessage(hWnd, WM_LBUTTONDOWN,
   0, 12 + 8 + j * 16 + ((55 + 8 + i * 16) << 16        
  ::SendMessage(hWnd, WM_LBUTTONUP,
  0, 12 + 8 + j * 16 + ((55 + 8 + i * 16) << 16));//这些是那个"按钮"的坐标位置(最笨的办法是截屏,然后测量...里面的那些变量(i,j)没什么关系,因为这段代码是我抄的)

  这样就对那个不管是不是按钮的东西完成了一次 左键单击.

不知道对不对,我是参考<<看雪精华 7>>里 扫雷逆向和扫雷机,并且调试成功了.理论上能够模拟对任何位置的 单双击,右击的.

你可以看看<<看雪精华 7>> 里的原文章和代码,希望对你有些启发.

不对的地方也请赐教~~~
2006-5-10 12:48
0
雪    币: 205
活跃值: (166)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
最初由 psusfy 发布
GetWindowThreadProcessId(hWnd,&dwProcessId); 取得那个程序的句柄
...
一系列判断和排除等等..
...
::SendMessage(hWnd, WM_LBUTTONDOWN,
........


楼上的,可以肯定,你的方法对于程序处于顶层窗口是绝对可行的

但如果程序的界面不是处于激活状态呢, 或者这个窗口根本就被我隐藏掉了呢?
我现在面临的实际情况确实是这样的,呵呵
希望大侠继续指教了
2006-5-10 17:02
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
findwindowex扫描子窗口,记下次数。
这个次数是固定的。。
以后直接findwindowex这个次数就是它的句柄了。
2006-5-10 21:06
0
雪    币: 229
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
最初由 psusfy 发布
GetWindowThreadProcessId(hWnd,&dwProcessId); 取得那个程序的句柄
...
一系列判断和排除等等..
...
::SendMessage(hWnd, WM_LBUTTONDOWN,
........


这是绝对可行的办法。。。。不管窗口是不是当前激活的窗口

偶现在也只用 psusfy提到的方法实现过

不晓得还有其他方法没捏。。。?
2006-5-10 23:45
0
雪    币: 229
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
最初由 arryang 发布
楼上的,可以肯定,你的方法对于程序处于顶层窗口是绝对可行的

但如果程序的界面不是处于激活状态呢, 或者这个窗口根本就被我隐藏掉了呢?
我现在面临的实际情况确实是这样的,呵呵
希望大侠继续指教了


点击 隐藏窗口的工具栏。。。?
2006-5-10 23:48
0
雪    币: 200
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
用软件Spy4Win很容易就找到,
再用SendMessage()!
2006-5-11 12:56
0
雪    币: 205
活跃值: (166)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
工具栏的句柄我是能拿到,用EnumWindows就可以取到,
在用FromHandle拿到其窗体,现在问题是如何下够向工具栏上的哪些所谓的按钮发点击消息,因为那个看似按钮的东西好像没有什么句柄可言的
2006-5-11 21:57
0
雪    币: 222
活跃值: (26)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
11
如果的确不是按钮的话可以试试:确定所谓“按钮”的位置(x,y),然后向工具栏SendMessage,发送一个在工具栏(x,y)位置鼠标单击的消息。
2006-5-12 12:48
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
真巧。楼主,我们想我们正好在做类似的东西。我通过对toolbar的遍历,得到idCommand,但我用
pToolBar->SendMessage(TB_CHECKBUTTON,(WPARAM)p.idCommand,(LPARAM)MAKELONG(true,0));
但没有反应。请各位在给看看
2006-5-12 14:32
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
我QQ:27679852,讨论研究哈,我还差最后那一步了。
2006-5-12 14:42
0
游客
登录 | 注册 方可回帖
返回
//