yiyeshu001 发表于 2008-5-29 00:49

紧急求助,非高手不能解决~~~

本人用VB作出一个小程序,当点击程序里的Command1时,程序会根据获得的按钮的句柄,对按钮实现点击功能。(备注:欲点击的按钮是桌面其他应用程序的句柄)

具体代码如下:
Private Sub Command1_Click()
Dim bWnd As Long 'bWnd为桌面其他应用程序的按钮
Const WM_LBUTTONDOWN = &H201
Const WM_LBUTTONUP = &H202
SendMessage bWnd, WM_LBUTTONDOWN, 0, 0
SendMessage bWnd, WM_LBUTTONUP, 0, 0
End Sub

但是,在实际运行过程当中,该程序对获得得的其他应用程序的按钮只会处于一个选中的状态,不会实现点击的效果。

PS:后来把sendmessage改为postmessage,还有增加延时sleep,发送ENTER,等等,发现按钮还是处于一种选中状态~~
达不到点击的效果~~

希望得到高手的指点~~~在下不胜感激俄~~~

lindecan17 发表于 2008-5-29 02:18

本人用VB作出一个小程序
PS:非高手不能解决。。。。。

三断笛 发表于 2008-5-29 02:20

是不是应该发送 BM_CLICK?
Const BM_CLICK = &HF5

yiyeshu001 发表于 2008-5-29 12:39

LS的,我调试过了,用BM_CLICK 好像效果也是一样~~5555555~~
这问题怎么这么棘手啊~~~

三断笛 发表于 2008-5-29 13:10

不可能的
除非是你获得的句柄有问题
你是怎么获取句柄的?把代码发上来

yiyeshu001 发表于 2008-5-29 13:32

哥们,我的QQ:164902896,加我下吧,我直接演示给你看啊~~

我是真的山穷水尽了~~没招了~~

三断笛 发表于 2008-5-29 16:47

发代码上来吧,让大家都来看看

flyue 发表于 2008-5-29 18:36

FindWindow、WindowFromPoint等。
此问题非API函数不能解决。。
LZ还是好好研究API吧!我刚刚学Vb是先学API,再学语法的(不建议你这样做)

三断笛 发表于 2008-5-29 18:58

我想楼主应该已经用FindWindow和FindwindowEx获得了按钮句柄,不过可能获得的句柄有问题,要不SendMessage不会有问题的
也不把源代码发上来看看  都帮不上忙

flyue 发表于 2008-5-29 19:04

主要是思维太VC化了,说实话在VB里我也不知道怎么实现(抱歉[em02] )
不过提示一两句还是可以的,具体怎么做还得靠自己吧…………

yiyeshu001 发表于 2008-5-30 02:33

应大家要求,本人把具体代码发布如下:
窗体代码:
Private Sub Command1_Click()
Dim bWnd As Long
Const WM_LBUTTONDOWN = &H201
Const WM_LBUTTONUP = &H202
bWnd = Val(Text1.Text)     'bWnd为要操作的按钮句柄,由Text1.Text得到
SendMessage bWnd, WM_LBUTTONDOWN, 0, 0&
SendMessage bWnd, WM_LBUTTONUP, 1, 0&
End Sub

模块:
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

说明:按钮句柄的获得,本人是通过一个工具直接获得的(获得的句柄绝对正确,本人发送过ENTER做实验,确实可以用,但不知道为什么发送按下跟弹开的键,按钮只是处于一种选中的状态,不会起到点击的效果,很是奇怪),一般获得句柄确实是要调用到API函数的FindWindow,本人学VB没多久,具体的不懂,所以只能利用一个小工具,直接获取句柄.

yiyeshu001 发表于 2008-5-30 02:42

对了,我新建了个群方便大家随时交流,欢迎加入,群号:40901090 注明:编程论坛

三断笛 发表于 2008-5-30 11:16

BM_CLICK,绝对正确,肯定是句柄的问题
SPY++获取的句柄是16进制,要在句柄前加&H,我用API_Bible获取的句柄是十进制,可以直接用
学着用findwindow和findwindowex吧,就这两个函数而已,学习API推荐你下载API_Bible

yiyeshu001 发表于 2008-5-30 13:49

三断笛 我获取的按钮句柄是十进制的,按钮句柄绝对正确~

因为我有做过类似发送ENTER的实验,是可以正确响应的。

笛兄,你QQ多少,方便加下吗?我的是289441397

yiyeshu001 发表于 2008-6-1 14:44

对了,电脑配置太高,会不会引起执行错误呢>?

我电脑配置:cpu:酷睿2双核E4500  内存 3G
不知道这个会不会有影响?

三断笛 发表于 2008-6-1 16:19

兼容的吧?不会出现错误的,一个小小的VB程序都出错,那微软就不要混了

页: [1]

编程论坛