能力值:
(RANK:350 )
|
-
-
2 楼
是VC程序吧?你用资源工具先得到这个按钮的资源ID号,再用GetDlgItem得到这个按钮句柄,再用SendMessage发消息就可控制了。
|
能力值:
( LV4,RANK:50 )
|
-
-
3 楼
多谢看雪老大的支持,但被操作程序没有源代码
我也最多只能拿到它工具条的窗口句柄,工具条上那个类似按钮东西,好像不是按钮
|
能力值:
( 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>> 里的原文章和代码,希望对你有些启发.
不对的地方也请赐教~~~
|
能力值:
( LV4,RANK:50 )
|
-
-
5 楼
最初由 psusfy 发布 GetWindowThreadProcessId(hWnd,&dwProcessId); 取得那个程序的句柄 ... 一系列判断和排除等等.. ... ::SendMessage(hWnd, WM_LBUTTONDOWN, ........ 楼上的,可以肯定,你的方法对于程序处于顶层窗口是绝对可行的
但如果程序的界面不是处于激活状态呢, 或者这个窗口根本就被我隐藏掉了呢?
我现在面临的实际情况确实是这样的,呵呵
希望大侠继续指教了
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
findwindowex扫描子窗口,记下次数。
这个次数是固定的。。
以后直接findwindowex这个次数就是它的句柄了。
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
最初由 psusfy 发布 GetWindowThreadProcessId(hWnd,&dwProcessId); 取得那个程序的句柄 ... 一系列判断和排除等等.. ... ::SendMessage(hWnd, WM_LBUTTONDOWN, ........
这是绝对可行的办法。。。。不管窗口是不是当前激活的窗口
偶现在也只用 psusfy提到的方法实现过
不晓得还有其他方法没捏。。。?
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
最初由 arryang 发布 楼上的,可以肯定,你的方法对于程序处于顶层窗口是绝对可行的
但如果程序的界面不是处于激活状态呢, 或者这个窗口根本就被我隐藏掉了呢? 我现在面临的实际情况确实是这样的,呵呵 希望大侠继续指教了 点击 隐藏窗口的工具栏。。。?
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
用软件Spy4Win很容易就找到,
再用SendMessage()!
|
能力值:
( LV4,RANK:50 )
|
-
-
10 楼
工具栏的句柄我是能拿到,用EnumWindows就可以取到,
在用FromHandle拿到其窗体,现在问题是如何下够向工具栏上的哪些所谓的按钮发点击消息,因为那个看似按钮的东西好像没有什么句柄可言的
|
能力值:
( LV8,RANK:130 )
|
-
-
11 楼
如果的确不是按钮的话可以试试:确定所谓“按钮”的位置(x,y),然后向工具栏SendMessage,发送一个在工具栏(x,y)位置鼠标单击的消息。
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
真巧。楼主,我们想我们正好在做类似的东西。我通过对toolbar的遍历,得到idCommand,但我用
pToolBar->SendMessage(TB_CHECKBUTTON,(WPARAM)p.idCommand,(LPARAM)MAKELONG(true,0));
但没有反应。请各位在给看看
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
我QQ:27679852,讨论研究哈,我还差最后那一步了。
|
|
|