Option ExplicitPrivate Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongPrivate Const WM_KEYDOWN = &H100 Private Const WM_KEYUP = &H101Private Sub Command1_Click() PostMessage Text1.hwnd, WM_KEYDOWN, vbKey1, 0 '将Text1.Hwnd 改为 你要发送信息窗口的句柄. End Sub
Option ExplicitPrivate 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 Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPrivate Const WM_KEYDOWN = &H100 Private Const WM_KEYUP = &H101Private Sub Command1_Click() Dim cHwnd As Long cHwnd = FindWindow(vbNullString, "fdsfds") '将 "fdsfds" 改为你要发送信息去的窗口的名称.
If cHwnd <> 0 Then PostMessage cHwnd, WM_KEYDOWN, vbKey1, 0 End If End Sub
Private Sub Form_Load() hwd = FindWindow(vbNullString, "QQ华夏") If hwd = 0 Then MsgBox "您还没启动英雄岛游戏 ~_~ ", vbOKOnly, "提示!" Unload Form1 End If GetWindowThreadProcessId hwd, pid '获取进程标识符 '将进程标识符做为参数,返回目标进程PID的句柄,得到此句柄后 '即可对目标进行读写操,PROCESS_ALL_ACCESS表示完全控制,权限最大 hProcess = OpenProcess(PROCESS_ALL_ACCESS, 0, pid) If hProcess = 0 Then MsgBox "很遗憾!未能成功载入进程 ^_^ ", vbOKOnly, "提示!" Unload Form1 End IfCloseHandle hProcess End SubPrivate Sub Timer2_Timer() PostMessage hProcess.hwnd, WM_KEYDOWN, vbKey1, 0Call keybd_event(49, 0, 0, 0) '模拟按下"1"键 mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 '这里是 鼠标左键按下 和松开两个事件的组合即一次单击End Sub 可老错,说什么无效限定值
Option ExplicitPrivate Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongPrivate Const WM_KEYDOWN = &H100
Private Const WM_KEYUP = &H101Private Sub Command1_Click()
PostMessage Text1.hwnd, WM_KEYDOWN, vbKey1, 0 '将Text1.Hwnd 改为 你要发送信息窗口的句柄.
End Sub
Option ExplicitPrivate 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 Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPrivate Const WM_KEYDOWN = &H100
Private Const WM_KEYUP = &H101Private Sub Command1_Click()
Dim cHwnd As Long
cHwnd = FindWindow(vbNullString, "fdsfds") '将 "fdsfds" 改为你要发送信息去的窗口的名称.
If cHwnd <> 0 Then
PostMessage cHwnd, WM_KEYDOWN, vbKey1, 0
End If
End Sub
hwd = FindWindow(vbNullString, "QQ华夏")
If hwd = 0 Then
MsgBox "您还没启动英雄岛游戏 ~_~ ", vbOKOnly, "提示!"
Unload Form1
End If
GetWindowThreadProcessId hwd, pid '获取进程标识符
'将进程标识符做为参数,返回目标进程PID的句柄,得到此句柄后
'即可对目标进行读写操,PROCESS_ALL_ACCESS表示完全控制,权限最大
hProcess = OpenProcess(PROCESS_ALL_ACCESS, 0, pid)
If hProcess = 0 Then
MsgBox "很遗憾!未能成功载入进程 ^_^ ", vbOKOnly, "提示!"
Unload Form1
End IfCloseHandle hProcess
End SubPrivate Sub Timer2_Timer()
PostMessage hProcess.hwnd, WM_KEYDOWN, vbKey1, 0Call keybd_event(49, 0, 0, 0)
'模拟按下"1"键
mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
'这里是 鼠标左键按下 和松开两个事件的组合即一次单击End Sub
可老错,说什么无效限定值
PostMessage hwd, MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 '这里是 鼠标左键按下 和松开两个事件的组合即一次单击
WM_LBUTTONUP才对吧...你那个MOUSEEVENT 实际上是一种模拟动作---- 和你手工操作差不多... 消息要用WM_LBUTTONDOWN
WM_LBUTTONUP你自己摸索去吧...
Private Const WM_KEYUP = &H101
Private Const WM_LBUTTONDOWN = &H201
Private Const WM_LBUTTONUP = &H202
Private Sub Timer2_Timer()
PostMessage hwd, WM_KEYDOWN, vbKey1, 0
PostMessage hwd, WM_LBUTTONDOWN, 0, 0
PostMessage hwd, WM_LBUTTONUP, 0, 0
End Sub老大们看下,为何不执行鼠标的动作呀
PostMessage Hwnd, WM_LBUTTONDOWN, MK_LBUTTON, y*2^16+x
PostMessage Hwnd, WM_LBUTTONUP, MK_LBUTTON, y*2^16+x