java 调用dll 方法 postmessage实现后台模拟按键_VB实现模拟键盘及模拟鼠标(后台操作)...
該樓層疑似違規已被系統折疊?隱藏此樓查看此樓
接下來來研究下模擬鼠標
模擬鼠標的常數整理,如下:
WM_MOUSEFIRST 0x0200 //移動鼠標時發生
WM_MOUSEMOVE 0x0200 //移動鼠標時發生,同WM_MOUSEFIRST
WM_LBUTTONDOWN 0x0201 //按下鼠標左鍵
WM_LBUTTONUP 0x0202 //釋放鼠標左鍵
WM_LBUTTONDBLCLK 0x0203 //雙擊鼠標左鍵
WM_RBUTTONDOWN 0x0204 //按下鼠標右鍵
WM_RBUTTONUP 0x0205 //釋放鼠標右鍵
WM_RBUTTONDBLCLK 0x0206 //雙擊鼠標右鍵
WM_MBUTTONDOWN 0x0207 //按下鼠標中鍵
WM_MBUTTONUP 0x0208 //釋放鼠標中鍵
WM_MBUTTONDBLCLK 0x0209 //雙擊鼠標中鍵
再看下參數,模擬鼠標時wParam應設為0了,而lParam應該為實際參數
下面是在按下按鈕時用sendmessage畫點的實例:
首先當然是新建一個窗體,畫一個按鈕(最好畫到右下角),并輸入以下代碼
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const WM_LBUTTONDOWN = &H201 '按下鼠標左鍵
Private Const WM_LBUTTONUP = &H202 '釋放鼠標左鍵
Private Type POINTAPI
X As Long
Y As Long
End Type
Private Sub Command1_Click() '單擊按鈕時就發送消息(畫在(80,80)的地方)
Call Click(Me.hwnd, 80, 80)
Me.PSet (80, 80)
End Sub
Private Sub Form_Load()
DrawWidth = 3 '設置輸出的線寬
Me.ScaleMode = vbPixels '以像素為單位,因為windows坐標通常以像素為單位的
End Sub
Private Function GetPoint_long(P As POINTAPI) As Long '由于sendmessage的坐標參數不是以XY直接帶入的,需要特殊的計算,以下就是算法
GetPoint_long = P.X + P.Y * 65536
End Function
Private Sub Click(hwnd As Long, X As Long, Y As Long) '模擬單擊
Dim p1 As POINTAPI
Dim p2 As Long '用于儲存計算后的坐標
p1.X = X
p1.Y = Y
p2 = GetPoint_long(p1)
Call SendMessage(hwnd, WM_LBUTTONDOWN, 0, p2)
Call SendMessage(hwnd, WM_LBUTTONUP, 0, p2)
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) '如果是左鍵單擊的話,就在指定畫個點
If Button = 1 Then Me.PSet (X, Y)
End Sub
個人空間:http://hi.baidu.com/qjhirxklhlefvxr
轉載請聲明源處,謝謝
總結
以上是生活随笔為你收集整理的java 调用dll 方法 postmessage实现后台模拟按键_VB实现模拟键盘及模拟鼠标(后台操作)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 新型计算机作文1000,人类:感性的计算
- 下一篇: h5页面不可 移动_H5营销|为什么H5