'服务器
''
''程序实现功能:实现远程控制鼠标
'作 者: ssihc0
'联系方式: ssihc0@163.com
'QQ:47400789
'版本:Version 1.0.0
'说明:复制请保留源作者信息,转载请说明,欢迎大家提出意见和建议
'作 者: ssihc0
'联系方式: ssihc0@163.com
'QQ:47400789
'版本:Version 1.0.0
'说明:复制请保留源作者信息,转载请说明,欢迎大家提出意见和建议
- '---
- '模块
- Option Explicit
- Public Const WH_JOURNALRECORD = 0
- Type POINTAPI
- x As Long
- y As Long
- End Type
- Type MOUSEHOOKSTRUCT
- pt As POINTAPI
- y As Long
- wHitTestCode As Long
- dwExtraInfo As Long
- End Type
- Type EVENTMSG
- message As Long
- paramL As Long
- paramH As Long
- time As Long
- hwnd As Long
- End Type
- Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, _
- ByVal hmod As Long, ByVal dwThreadId As Long) As Long
- Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
- Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Long, lParam As Any) As Long
- Declare Sub CopyMemory Lib "KERNEL32" Alias "RtlMoveMemory" (lpvDest As Any, ByVal lpvSource As Long, ByVal cbCopy As Long)
- Public hHook As Long ' handle of Hook Procedure
- Public msg As EVENTMSG
- Public lHwnd As Long
- Public lKey As Long
- Public s_msg As String
- '消息
- Public Const HC_ACTION = 0
- Public Const WM_KEYDOWN =
- Public Const WM_MOUSEMOVE =
- Public Const WM_LBUTTONDBLCLK =
- Public Const WM_MBUTTONUP =
- Public Const WM_MBUTTONDOWN =
- Public Const WM_MBUTTONDBLCLK =
- Public Const WM_LBUTTONUP =
- Public Const WM_LBUTTONDOWN =
- Public Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
- Public Declare Function GetKeyNameText Lib "user32" Alias "GetKeyNameTextA" (ByVal lParam As Long, ByVal lpBuffer As String, ByVal nSize As Long) As Long
- Public strKeyName As String * 255
- Public c(1, 1) As Double
- Sub EnableHook()
- hHook = SetWindowsHookEx(0, AddressOf HookProc, App.hInstance, 0)
- End Sub
- Sub FreeHook()
- Dim ret As Long
- ret = UnhookWindowsHookEx(hHook)
- End Sub
- Function HookProc(ByVal code As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
- If code = HC_ACTION Then
- CopyMemory msg, lParam, LenB(msg)
- If msg.message <> &H200 Then
- Debug.Print msg.message
- End If
- Select Case msg.message
- Case &H204, &H205, &H201, &H202, &H203, &H207, &H208, &H209,
- Dim x, y As Long
- Dim ms1 As MOUSEHOOKSTRUCT
- Dim c_9 As Long
- CopyMemory ms1, lParam, LenB(ms1)
- x = ms1.pt.y
- y = ms1.y
- If s_msg = "!" & msg.message & "," & x & "," & y & "!" Then
- Else
- mainform.scksever.SendData "!" & msg.message & "," & x & "," & y & "!"
- s_msg = "!" & msg.message & "," & x & "," & y & "!"
- End If
- End Select
- End If
- HookProc = CallNextHookEx(hHook, code, wParam, lParam)
- End Function
-
- 'form
- Private Sub Command1_Click()
- Call FreeHook
- Command2.Enabled = True
- End Sub
- Private Sub Command2_Click()
- Command2.Enabled = False
- Call EnableHook
- End Sub
- Private Sub Command3_Click()
- scksever.LocalPort = 1007
- scksever.RemotePort = 1008
- scksever.Listen
- MsgBox "设本机为服务器成功!", vbInformation, "提示"
- End Sub
- Private Sub Form_Load()
- Me.Left = (Screen.Width - Me.Width) / 2
- Me.Top = (Screen.Height - Me.Height) / 2
- 'SetWindowPos hwnd, -1, 0, 0, 0, 0, 3
- Text2.Text = scksever.LocalIP
- End Sub
- Private Sub scksever_ConnectionRequest(ByVal requestID As Long)
- If scksever.State <> 0 Then scksever.Close
- scksever.Accept requestID
- Text1.Text = scksever.RemoteHostIP
- End Sub
客户端
-
- 'Module
- Public Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
- 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
- Public Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
- Public Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
- Public Const MOUSEEVENTF_ABSOLUTE = &H8000 ' absolute move
- Public Const MOUSEEVENTF_LEFTDOWN = &H2 ' left button down
- Public Const MOUSEEVENTF_LEFTUP = &H4 ' left button up
- Public Const MOUSEEVENTF_MIDDLEDOWN = &H20 ' middle button down
- Public Const MOUSEEVENTF_MIDDLEUP = &H40 ' middle button up
- Public Const MOUSEEVENTF_RIGHTDOWN = &H8 ' right button down
- ' mouse move
- Public Const MOUSEEVENTF_RIGHTUP = &H10 ' right button up
- Public Const MOUSEEVENTF_MOVE =
- 'form
- Private Sub Command1_Click()
- If txtip.Text = "" Then
- MsgBox "请输入IP,后连接", vbInformation, "提示"
- Exit Sub
- Else
- Command1.Enabled = False
- sckclient.RemoteHost = txtip.Text
- sckclient.LocalPort = 1008
- sckclient.RemotePort = 1007
- sckclient.Connect
- End If
- End Sub
- Private Sub Form_Load()
- Me.Left = (Screen.Width - Me.Width) / 2
- Me.Top = (Screen.Height - Me.Height) / 2
- End Sub
- Private Sub sckclient_Connect()
- MsgBox "连接成功", vbInformation, "OK"
- End Sub
- Private Sub sckclient_DataArrival(ByVal bytesTotal As Long)
- Dim sdata As String
- Dim strdata As String
- Dim mycommand As String
- Dim sb As Long
- Dim s() As String
- sckclient.GetData sdata
- If Left$(sdata, 1) = "!" And Right$(sdata, 1) = "!" Then
- Dim s1 As String
- s1 = Mid$(sdata, 2, InStr(2, sdata, "!"))
- s = Split(s1, ",")
- Select Case Val(s(0))
- Case
- mouse_event MOUSEEVENTF_RIGHTDOWN, 0, 0, 0&, 0
- Case
- mouse_event MOUSEEVENTF_RIGHTUP, 0, 0, 0&, 0
- Case
- mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0&, 0
- 'mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0&, 0&
- Case
- 'mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0&, 0&
- mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0&, 0
- Case
- Case
- Case
- Case
- Case
- Dim x As Long
- Dim y As Long
- x = Val(s(1))
- y = Val(s(2))
- SetCursorPos x, y
- End Select
- Debug.Print
- End If
- End Sub