用postmessage后台点击记事本的关闭按钮我知道有直接的消息可以将记事本关闭,不过我现在像通过定点按按钮来解决。先用 GetCursorPos找到屏幕上记事本关闭按钮的位置 x,y,然后最小化记事本
然后用findwindow找到记事本的句柄,为long a
wsmg= WM_LBUTTONDOWN
wparam=1,
lparam=y*66536+x
Call PostMessage(a, wMsg, wParam, lParam)
然后sleep 200
wsmg= WM_LBUTTONUP
wparam=1,
lparam=y*66536+x
Call PostMessage(a, wMsg, wParam, lParam)
为什么记事本一点反应都没有,难道是坐标有问题?钦各位老师帮帮忙,看错在哪里?
然后用findwindow找到记事本的句柄,为long a
wsmg= WM_LBUTTONDOWN
wparam=1,
lparam=y*66536+x
Call PostMessage(a, wMsg, wParam, lParam)
然后sleep 200
wsmg= WM_LBUTTONUP
wparam=1,
lparam=y*66536+x
Call PostMessage(a, wMsg, wParam, lParam)
为什么记事本一点反应都没有,难道是坐标有问题?钦各位老师帮帮忙,看错在哪里?
更正为wmsg= WM_LBUTTONDOWN,wmsg=WM_LBUTTONUP
书写方面没问题
你要发送窗体关闭消息,前提条件是找到记事本句柄后发送Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Const WM_CLOSE = &H10Private Sub Command1_Click()
Dim lngP As Long
lngP = FindWindow(vbNullString, "无标题 - 记事本")
If lngP <> 0 Then lngP = PostMessage(lngP, WM_CLOSE, 0&, 0&)
End Sub
老师,您好,也就是说用postmessage后台按键关闭记事本这个方法行不通?
那我想问一下,我上面的代码如果用在没有禁用postmessage消息的游戏里面是行的通的吗?谢谢您
嗯。找句柄的话一般都用findwindow和findweindowex.我是怕坐标是不是存在什么问题,如果是坐标没错的话,基本就是被屏蔽了
2.你最好在发送点击事件前,先用SetCursorPos把鼠标移到对应的位置上,然后用mouse_event模拟点击
Public Declare Function SetCursorPos Lib "user32" Alias "SetCursorPos" (ByVal x As Long, ByVal y As Long) As LongPublic Declare Sub mouse_event Lib "user32" Alias "mouse_event" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Private Const WM_LBUTTONDOWN As Long = &H201
Private Const WM_LBUTTONUP As Long = &H202Private Sub Command1_Click()
SendClick Me.hwnd, 10, 10
End SubPrivate Sub Form_Click()
MsgBox "dasd"
End SubPrivate Function SendClick(hwnd As Long, mX As Long, mY As Long)
'发送点击消息
Dim I As Long
I = PostMessage(hwnd, WM_LBUTTONDOWN, 0, (mX And &HFFFF) + (mY And &HFFFF) * &H10000)
I = PostMessage(hwnd, WM_LBUTTONUP, 0, (mX And &HFFFF) + (mY And &HFFFF) * &H10000)
End Function你要是说 hwnd不对,所以没有发送到,好像又不是这么回事情,不知道为什么。现在难道高手都不在了吗?