谢谢titilima(李马大侠的解答!哪位大侠能把这个想法用vb代码写出来?谢谢先! to SoHo_Andy(冰) 大侠:不能那样做啊!我没有那个软件,那个软件不是我做的啊!我没有软件的代码,无法用接call 按钮名_click 来进行。要是这样,那就简单了。继续请教!谢谢先!
首先应该添加以下声明: Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long Private Const BM_CLICK = &HF5然后使用以下代码: Dim hBtn As Long Dim hParent As Long hParent = FindWindow("按钮父窗口的类名", "按钮的父窗口名称") hBtn = FindWindowEx(hParent, Null, Null, "按钮的标题") SendMessage hBtn, BM_CLICK, 0, 0 在VC中我是这样的,不知道VB能不能行得通。
我是学VC的,VB代码不会写:)
你直接 call 按钮名_click 就行,只要你事先定义了按钮的Click 事件
to SoHo_Andy(冰) 大侠:不能那样做啊!我没有那个软件,那个软件不是我做的啊!我没有软件的代码,无法用接call 按钮名_click 来进行。要是这样,那就简单了。继续请教!谢谢先!
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Const BM_CLICK = &HF5然后使用以下代码:
Dim hBtn As Long
Dim hParent As Long
hParent = FindWindow("按钮父窗口的类名", "按钮的父窗口名称")
hBtn = FindWindowEx(hParent, Null, Null, "按钮的标题")
SendMessage hBtn, BM_CLICK, 0, 0
在VC中我是这样的,不知道VB能不能行得通。
有个问题:hParent = FindWindow("按钮父窗口的类名", "按钮的父窗口名称")--“按钮父窗口的类名”怎么知道?“按钮的父窗口名称”怎么知道?可能你会觉得这样简单的问题很好笑,但我确实是不懂才请教的。有个现成的例子,可以说明我的问题,请看:
http://.yalaso.net/reply_form.asp?id=105649&ptype=4&title=网站开发:ASP+SQL%20Server2000
只要在“联系人”“标题”“内容”随便填个东东,按“发表”就可以看到有个信息框出现(如果是在时间段8:00~24:00,一般显示“你提交的信息随后发表在跳蚤市场上”,如果是时间段0:00~8:00,一般显示“非开发时间,珠海视窗敬启”),该信息框有个按钮“确定”。请问:这个按钮“确定”的“按钮父窗口的类名”怎么知道?“按钮的父窗口名称”怎么知道?在vb里这么实现点击一下“确定”按钮?
能不能用vc写好编译成exe文件,在vb里调用?谢谢先!
谢谢了!
请问:那样看到的只是那个窗口的句柄,那我怎么去点击那个窗口上面的一个按钮?(那个按钮上的文字,也就是caption属性已知道)请教请教!
还有个小问题:要是那个窗口有几个按钮,有两个可能:
(1)上面的按钮的caption都不同,怎么SendMessage?
(2)要是有两个的caption相同,如“递交”之类的(如果界面上有几个框架,就可能有几种选择的可能,就会可能出现)怎么办?请教请教!
这之后可以使用GetDlgItem函数来取得它的句柄,这个要比FindWindowEx可靠得多。
有个问题:取得那个按钮的句柄后,如何才能“点击”一下它呢?
“GetDlgItem函数来取得它的句柄,这个要比FindWindowEx可靠得多。”--是怎么回事?为什么会比较可靠?我是菜鸟啊,继续请教!谢谢先!
请查Shell函数的使用方法