现在的位置: 首页 > 综合 > 正文

实现远程控制鼠标

2014年02月28日 ⁄ 综合 ⁄ 共 6099字 ⁄ 字号 评论关闭
'服务器
''
''程序实现功能:实现远程控制鼠标
'作    者: ssihc0
'联系方式: ssihc0@163.com
'QQ:47400789
'版本:Version 1.0.0
'说明:复制请保留源作者信息,转载请说明,欢迎大家提出意见和建议
  1.   '---
  2.   '模块
  3.   Option Explicit
  4.   Public Const WH_JOURNALRECORD = 0
  5. Type POINTAPI
  6.   x   As Long
  7.   y   As Long
  8.   End Type
  9.   Type MOUSEHOOKSTRUCT
  10.   pt   As POINTAPI
  11.   y  As Long
  12.   wHitTestCode   As Long
  13.   dwExtraInfo   As Long
  14.   End Type
  15.   Type EVENTMSG
  16.                   message   As Long
  17.                   paramL   As Long
  18.                   paramH   As Long
  19.                   time   As Long
  20.                   hwnd   As Long
  21.   End Type
  22.   Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As LongByVal lpfn As Long, _
  23.         ByVal hmod As LongByVal dwThreadId As LongAs Long
  24.   Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As LongAs Long
  25.   Declare Function CallNextHookEx Lib "user32" (ByVal hHook As LongByVal nCode As LongByVal wParam As Long, lParam As Any) As Long
  26.   Declare Sub CopyMemory Lib "KERNEL32" Alias "RtlMoveMemory" (lpvDest As Any, ByVal lpvSource As LongByVal cbCopy As Long)
  27.   Public hHook     As Long         '   handle   of   Hook   Procedure
  28.   Public msg     As EVENTMSG
  29.   Public lHwnd     As Long
  30.   Public lKey     As Long
  31. Public s_msg As String
  32.   '消息
  33.     Public Const HC_ACTION = 0
  34.     Public Const WM_KEYDOWN = 
  35.     Public Const WM_MOUSEMOVE = 
  36.     Public Const WM_LBUTTONDBLCLK = 
  37.     Public Const WM_MBUTTONUP = 
  38.     Public Const WM_MBUTTONDOWN = 
  39.     Public Const WM_MBUTTONDBLCLK = 
  40.     Public Const WM_LBUTTONUP = 
  41.     Public Const WM_LBUTTONDOWN = 
  42.   Public Declare Function SetWindowPos Lib "user32" (ByVal hwnd As LongByVal hWndInsertAfter As LongByVal x As LongByVal y As LongByVal cx As LongByVal cy As LongByVal wFlags As LongAs Long
  43.   Public Declare Function GetKeyNameText Lib "user32" Alias "GetKeyNameTextA" (ByVal lParam As LongByVal lpBuffer As StringByVal nSize As LongAs Long
  44.   Public strKeyName     As String * 255
  45. Public c(1, 1) As Double
  46.   Sub EnableHook()
  47.         hHook = SetWindowsHookEx(0, AddressOf HookProc, App.hInstance, 0)
  48.   End Sub
  49.   Sub FreeHook()
  50.           Dim ret     As Long
  51.           ret = UnhookWindowsHookEx(hHook)
  52.   End Sub
  53.   Function HookProc(ByVal code As LongByVal wParam As LongByVal lParam As LongAs Long
  54.           If code = HC_ACTION Then
  55.                   CopyMemory msg, lParam, LenB(msg)
  56.                   If msg.message <> &H200 Then
  57.                    Debug.Print msg.message
  58.                   End If
  59.                   Select Case msg.message
  60.                     Case &H204, &H205, &H201, &H202, &H203, &H207, &H208, &H209, 
  61.                         Dim x, y As Long
  62.                         Dim ms1 As MOUSEHOOKSTRUCT
  63.                         Dim c_9 As Long
  64.                         CopyMemory ms1, lParam, LenB(ms1)
  65.                         x = ms1.pt.y
  66.                         y = ms1.y
  67.                         If s_msg = "!" & msg.message & "," & x & "," & y & "!" Then
  68.                         
  69.                         Else
  70.                           mainform.scksever.SendData "!" & msg.message & "," & x & "," & y & "!"
  71.                           s_msg = "!" & msg.message & "," & x & "," & y & "!"
  72.                         End If
  73.                       
  74.                     End Select
  75.                   End If
  76.           HookProc = CallNextHookEx(hHook, code, wParam, lParam)
  77.   End Function
    1. 'form
    2. Private Sub Command1_Click()
    3. Call FreeHook
    4. Command2.Enabled = True
    5. End Sub
    6. Private Sub Command2_Click()
    7. Command2.Enabled = False
    8. Call EnableHook
    9. End Sub
    10. Private Sub Command3_Click()
    11.  scksever.LocalPort = 1007
    12.     scksever.RemotePort = 1008
    13.     scksever.Listen
    14.     MsgBox "设本机为服务器成功!", vbInformation, "提示"
    15. End Sub
    16. Private Sub Form_Load()
    17. Me.Left = (Screen.Width - Me.Width) / 2
    18. Me.Top = (Screen.Height - Me.Height) / 2
    19. 'SetWindowPos hwnd, -1, 0, 0, 0, 0, 3
    20. Text2.Text = scksever.LocalIP
    21. End Sub
    22. Private Sub scksever_ConnectionRequest(ByVal requestID As Long)
    23. If scksever.State <> 0 Then scksever.Close
    24. scksever.Accept requestID
    25. Text1.Text = scksever.RemoteHostIP
    26. End Sub

    客户端

    1. 'Module
    2. Public Declare Function SetCursorPos Lib "user32" (ByVal x As LongByVal y As LongAs Long
    3. Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As LongByVal wMsg As LongByVal wParam As Long, lParam As Any) As Long
    4. Public Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As LongByVal yPoint As LongAs Long
    5. Public Declare Sub mouse_event Lib "user32" (ByVal dwFlags As LongByVal dx As LongByVal dy As LongByVal cButtons As LongByVal dwExtraInfo As Long)
    6. Public Const MOUSEEVENTF_ABSOLUTE = &H8000 '  absolute move
    7. Public Const MOUSEEVENTF_LEFTDOWN = &H2 '  left button down
    8. Public Const MOUSEEVENTF_LEFTUP = &H4 '  left button up
    9. Public Const MOUSEEVENTF_MIDDLEDOWN = &H20 '  middle button down
    10. Public Const MOUSEEVENTF_MIDDLEUP = &H40 '  middle button up
    11. Public Const MOUSEEVENTF_RIGHTDOWN = &H8 '  right button down
    12. '  mouse move
    13. Public Const MOUSEEVENTF_RIGHTUP = &H10 '  right button up
    14. Public Const MOUSEEVENTF_MOVE = 
    15. 'form
    16. Private Sub Command1_Click()
    17. If txtip.Text = "" Then
    18. MsgBox "请输入IP,后连接", vbInformation, "提示"
    19. Exit Sub
    20. Else
    21. Command1.Enabled = False
    22. sckclient.RemoteHost = txtip.Text
    23. sckclient.LocalPort = 1008
    24. sckclient.RemotePort = 1007
    25. sckclient.Connect
    26. End If
    27. End Sub
    28. Private Sub Form_Load()
    29. Me.Left = (Screen.Width - Me.Width) / 2
    30. Me.Top = (Screen.Height - Me.Height) / 2
    31. End Sub
    32. Private Sub sckclient_Connect()
    33. MsgBox "连接成功", vbInformation, "OK"
    34.     
    35. End Sub
    36. Private Sub sckclient_DataArrival(ByVal bytesTotal As Long)
    37. Dim sdata As String
    38. Dim strdata As String
    39. Dim mycommand As String
    40. Dim sb As Long
    41. Dim s() As String
    42. sckclient.GetData sdata
    43. If Left$(sdata, 1) = "!" And Right$(sdata, 1) = "!" Then
    44. Dim s1 As String
    45. s1 = Mid$(sdata, 2, InStr(2, sdata, "!"))
    46. s = Split(s1, ",")
    47. Select Case Val(s(0))
    48. Case 
    49. mouse_event MOUSEEVENTF_RIGHTDOWN, 0, 0, 0&, 0
    50. Case 
    51. mouse_event MOUSEEVENTF_RIGHTUP, 0, 0, 0&, 0
    52. Case 
    53. mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0&, 0
    54. 'mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0&, 0&
    55. Case 
    56. 'mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0&, 0&
    57. mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0&, 0
    58. Case 
    59. Case 
    60. Case 
    61. Case 
    62. Case 
    63. Dim x As Long
    64. Dim y As Long
    65. x = Val(s(1))
    66. y = Val(s(2))
    67. SetCursorPos x, y
    68. End Select
    69. Debug.Print
    70. End If
    71. End Sub

抱歉!评论已关闭.