是这样的:
通过点击form1中的"暂停播放"(name=M1)菜单,向已经运行的程序replace(replace是运行后的标题)的对话框中的"关闭"按钮发送消息
问题:
1我用findwindow函数取出来的句柄跟spy++取出来的不一样,可我不知道我的findwindow语句出了什么问题?
2另外,sendmessage也不好用,我拿form1中的command1按钮做实验用
SendMessage Command1.hwnd, WM_LBUTTONDOWN, MK_LBUTTON, ByVal &H10001
也不能执行该按钮的功能?程序如下:
在module1中这样写的Option Explicit
Public Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As LongPublic Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" (ByVal hwnd As Long, ByVal _
wMsg As Long, ByVal wParam As Long, lParam As Any) As LongPublic Declare Function FindWindowEx Lib "user32" _
Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 _
As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As LongFunction FindPaterWindowHandle(hwnd_PaterHwnd As Long, cstring_PaterCap As String) As Boolean
hwnd_PaterHwnd = FindWindow(vbNullString, cstring_PaterCap)
If (0 <> hwnd_PaterHwnd) Then
FindPaterWindowHandle = True
Else
FindPaterWindowHandle = False
End If
End FunctionFunction FindButtonHandle(hwnd_PaterHwnd As Long, cstring_ButtonCap As String) As Boolean
hwnd_PaterHwnd = FindWindowEx(hwnd_PaterHwnd, 0, vbNullString, cstring_ButtonCap)
If (0 <> hwnd_PaterHwnd) Then
FindButtonHandle = True
Else
FindButtonHandle = False
End If
End Function
在form1的菜单中这样写的:
Private Const MK_LBUTTON = &H1
Private Const WM_LBUTTONDOWN = &H201Private Sub Command1_Click()
MsgBox "消息", , "条件"
End Sub
Private Sub M1_Click()
Dim hwnd_PaterHwnd As Long
hwnd_PaterHwnd = FindWindow(vbNullString, "Replace")
If Not FindPaterWindowHandle(hwnd_PaterHwnd, "replace") Then
MsgBox "无法查找父窗口句柄", , "提示"
Else
'MsgBox "已查找到父窗口句柄", , "提示"
End If
If Not FindButtonHandle(hwnd_PaterHwnd, "关闭") Then
MsgBox "无法查找父窗口的按钮句柄", , "提示"
Else
'MsgBox "已找到父窗口的按钮句柄", , "提示"
End If
'MsgBox "开始发送消息", , "提示"
SendMessage hwnd_PaterHwnd, WM_LBUTTONDOWN, MK_LBUTTON, ByVal &H10001
MsgBox "JIESHU", , "TISHI"
End Sub
通过点击form1中的"暂停播放"(name=M1)菜单,向已经运行的程序replace(replace是运行后的标题)的对话框中的"关闭"按钮发送消息
问题:
1我用findwindow函数取出来的句柄跟spy++取出来的不一样,可我不知道我的findwindow语句出了什么问题?
2另外,sendmessage也不好用,我拿form1中的command1按钮做实验用
SendMessage Command1.hwnd, WM_LBUTTONDOWN, MK_LBUTTON, ByVal &H10001
也不能执行该按钮的功能?程序如下:
在module1中这样写的Option Explicit
Public Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As LongPublic Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" (ByVal hwnd As Long, ByVal _
wMsg As Long, ByVal wParam As Long, lParam As Any) As LongPublic Declare Function FindWindowEx Lib "user32" _
Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 _
As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As LongFunction FindPaterWindowHandle(hwnd_PaterHwnd As Long, cstring_PaterCap As String) As Boolean
hwnd_PaterHwnd = FindWindow(vbNullString, cstring_PaterCap)
If (0 <> hwnd_PaterHwnd) Then
FindPaterWindowHandle = True
Else
FindPaterWindowHandle = False
End If
End FunctionFunction FindButtonHandle(hwnd_PaterHwnd As Long, cstring_ButtonCap As String) As Boolean
hwnd_PaterHwnd = FindWindowEx(hwnd_PaterHwnd, 0, vbNullString, cstring_ButtonCap)
If (0 <> hwnd_PaterHwnd) Then
FindButtonHandle = True
Else
FindButtonHandle = False
End If
End Function
在form1的菜单中这样写的:
Private Const MK_LBUTTON = &H1
Private Const WM_LBUTTONDOWN = &H201Private Sub Command1_Click()
MsgBox "消息", , "条件"
End Sub
Private Sub M1_Click()
Dim hwnd_PaterHwnd As Long
hwnd_PaterHwnd = FindWindow(vbNullString, "Replace")
If Not FindPaterWindowHandle(hwnd_PaterHwnd, "replace") Then
MsgBox "无法查找父窗口句柄", , "提示"
Else
'MsgBox "已查找到父窗口句柄", , "提示"
End If
If Not FindButtonHandle(hwnd_PaterHwnd, "关闭") Then
MsgBox "无法查找父窗口的按钮句柄", , "提示"
Else
'MsgBox "已找到父窗口的按钮句柄", , "提示"
End If
'MsgBox "开始发送消息", , "提示"
SendMessage hwnd_PaterHwnd, WM_LBUTTONDOWN, MK_LBUTTON, ByVal &H10001
MsgBox "JIESHU", , "TISHI"
End Sub
解决方案 »
- VB如何读取JavaScript的变量?
- 这个问题有点难。。。WindowsMediaPlayer
- 怎么在VB中更改数据库用户的密码啊
- 想在数据库中用通配符(*,?)进行查找????
- 如何获得运行窗口的运行路径!!!!请VB高手帮帮我!!!
- timer控件的问题
- 有空到DOS坐坐!!
- 这个控件谁有哇,帮帮我
- 仍然是压缩mdb文件的问题
- ado的一个小问题,请大家帮帮忙.
- 看看这个连接到 sql2000 的 事务 为什么没有 改变数据库里 的内容??????
- 前仆后继,一往直前,再接再厉,梅开九度,继续提问:SQL语句问题. 这次的问题好像有点复杂(只是复杂,还是不难),大家还来帮我哦!!!帮顶也有分.
你的按钮又不是只有一个 找到的按钮如果没有其他的限制的话
完全可能使用findwindowex根本就不是你要的那个按钮的句柄