mouse_event 滑鼠類比(轉集)

來源:互聯網
上載者:User

 '-------------------------------------------
' 類比滑鼠的左鍵單擊和按右鍵
'-------------------------------------------
' 洪恩線上 求知無限
'-------------------------------------------
'程式說明:
'本例採用API函數實現類比的滑鼠事件,程式運行後會
'產生十分有趣的效果。也來試一試。
'本例中只使用了相對滑鼠座標,我們也可以使用絕對
'滑鼠座標來試一試。
'-------------------------------------------

'【VB聲明】
' Private 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)

'【說明】
' 類比一次滑鼠事件

'【備忘】
' 進行相對運動的時候,由SystemParametersInfo函數規定的系統滑鼠軌跡速度會應用於滑鼠啟動並執行速度

'【參數表】
' dwFlags -------- Long,下述標誌的一個組合
' MOUSEEVENTF_ABSOLUTE
' dx和dy指定滑鼠座標系統中的一個絕對位置。在滑鼠座標系統中,螢幕在水平和垂直方向上均勻分割成65535×65535個單元 -
' MOUSEEVENTF_MOVE 移動滑鼠
' MOUSEEVENTF_LEFTDOWN 類比滑鼠左鍵按下
' MOUSEEVENTF_LEFTUP 類比滑鼠左鍵抬起
' MOUSEEVENTF_RIGHTDOWN 類比滑鼠右鍵按下
' MOUSEEVENTF_RIGHTUP 類比滑鼠右鍵抬起
' MOUSEEVENTF_MIDDLEDOWN 類比滑鼠中鍵按下
' MOUSEEVENTF_MIDDLEUP 類比滑鼠中鍵抬起
' dx ------------- Long,根據是否指定了MOUSEEVENTF_ABSOLUTE標誌,指定水平方向的絕對位置或相對運動'

' dy ------------- Long,根據是否指定了MOUSEEVENTF_ABSOLUTE標誌,指定垂直方向的絕對位置或相對運動

' cButtons ------- Long,未使用

' dwExtraInfo ---- Long,通常未用的一個值。用GetMessageExtraInfo函數可取得這個值。可用的值取決於特定的驅動程式

 

 

  1. '對API變數的定義
    Const MOUSEEVENTF_LEFTDOWN = &H2
    Const MOUSEEVENTF_LEFTUP = &H4
    Const MOUSEEVENTF_MIDDLEDOWN = &H20
    Const MOUSEEVENTF_MIDDLEUP = &H40
    Const MOUSEEVENTF_MOVE = &H1
    Const MOUSEEVENTF_ABSOLUTE = &H8000
    Const MOUSEEVENTF_RIGHTDOWN = &H8
    Const MOUSEEVENTF_RIGHTUP = &H10
  2. ''滑鼠類比
  3. Private 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)
  4.      
  5. ''滑鼠位置
  6. Public Type POINTAPI
  7.     x As Long
  8.     y As Long
  9. End Type
  10. Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
  11.      
  12. '如果同時要類比兩個滑鼠事件,可以用 Or 將兩個參數串連
  13. '調用了mouse_event函數,其參數的設定見前面說明
  14. '1單擊,2右單擊,3左雙擊,4上滾,5,下滾,0移動
  15. ''參數:動作,X,Y,返回?
  16. Public Sub set_mouse(Clk_type As Long, Optional x As Variant = 0, Optional y As Long = 0, Optional isBack As Boolean = False)
  17.     Dim mouseven As Long
  18.     Dim msP As POINTAPI, newMsp As POINTAPI
  19.     mouseven = 0
  20.     
  21.     newMsp.x = x
  22.     newMsp.y = y
  23.     Debug.Print TypeName(x)
  24.     If x > 0 Or y > 0 Then mouseven = MOUSEEVENTF_MOVE Or MOUSEEVENTF_ABSOLUTE
  25.     
  26.     ''如果需要返回,則記錄原位置
  27.     If isBack Then GetCursorPos msP
  28.     
  29.     If Clk_type = 1 Then '這裡是 滑鼠左鍵按下 和鬆開兩個事件的組合即一次單擊
  30.         mouse_event mouseven Or MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, newMsp.x, y, 0, 0
  31.     ElseIf Clk_type = 2 Then '類比滑鼠右鍵單擊事件,
  32.         mouse_event mouseven Or MOUSEEVENTF_RIGHTDOWN Or MOUSEEVENTF_RIGHTUP, newMsp.x, y, 0, 0
  33.     ElseIf Clk_type = 3 Then '兩次連續的滑鼠左鍵單擊事件 構成一次滑鼠雙擊事件
  34.         mouse_event mouseven Or MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, newMsp.x, y, 0, 0
  35.         mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, newMsp.x, y, 0, 0
  36.     ElseIf Clk_type = 4 Then '上滾
  37.         mouse_event mouseven Or MOUSEEVENTF_MIDDLEUP, newMsp.x, y, 0, 0
  38.     ElseIf Clk_type = 5 Then '下滾
  39.         mouse_event mouseven Or MOUSEEVENTF_MIDDLEDOWN, newMsp.x, y, 0, 0
  40.     Else
  41.         mouse_event mouseven, newMsp.x, y, 0, 0
  42.     End If
  43.     
  44.     ''如果需要返回,則記錄原位置
  45.     If isBack Then set_mouse 0, msP.x, msP.y, False
  46. End Sub
  47. Public Sub getMsPos(msPos As POINTAPI)
  48.     GetCursorPos msPos
  49. End Sub

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.