VB模擬一次滑鼠事件

2021-04-13 05:25:04 字數 3865 閱讀 6812

使用api函式mouse_event可以模擬一次滑鼠事件,比如左鍵單擊、雙擊和右鍵單擊等。這個例項利用此函式產生了十分有趣的效果,無論滑鼠處於螢幕的任何位置,每隔一秒程式會使滑鼠在那個位置單擊或雙擊一次,這會給我們造成什麼樣的混亂呢?試一試就知道了。

-------------------------------------------

模擬滑鼠的左鍵單擊和右鍵單擊

-------------------------------------------

程式說明:

本例採用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函式可取得這個值。可用的值取決於特定的驅動程式

option explicit

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 _

) option_tag標示選擇了哪一種模擬事件

dim option_tag as integer

ontest標示是否處於模擬狀態,以便我們停止模擬

dim ontest as boolean

對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

控制 模擬的開始與結束

private sub command1_click()

如果不處於模擬狀態

if ontest = false then

command1.caption = "快停下來吧"

timer1.enabled = true

ontest = true

如果處於模擬狀態

else

command1.caption = "試一試"

timer1.enabled = false

ontest = false

end if

end sub

窗體載入時一些變數需要設定

private sub form_load()

option_tag = 1

timer1.enabled = false

ontest = false

end sub

選擇了模擬「滑鼠左鍵單擊事件」

private sub option1_click()

option_tag = 1 左鍵單擊事件

option2.value = false

option3.value = false

end sub

選擇了模擬「滑鼠右鍵單擊事件」

private sub option2_click()

option_tag = 2 右鍵單擊事件

option1.value = false

option3.value = false

end sub

選擇了模擬「滑鼠雙擊事件」

private sub option3_click()

ption_tag = 3 雙擊事件

option1.value = false

option2.value = false

end sub

每隔一秒中模擬一次滑鼠事件

private sub timer1_timer()

if option_tag = 1 then

呼叫了mouse_event函式,其引數的設定見前面說明

如果同時要模擬兩個滑鼠事件,可以用 or 將兩個引數連線

這裡是 滑鼠左鍵按下 和鬆開兩個事件的組合即一次單擊

mouse_event mouseeventf_leftdown or mouseeventf_leftup, 0, 0, 0, 0

elseif option_tag = 2 then

模擬滑鼠右鍵單擊事件

mouse_event mouseeventf_rightdown or mouseeventf_rightup, 0, 0, 0, 0

else

兩次連續的滑鼠左鍵單擊事件 構成一次滑鼠雙擊事件

mouse_event mouseeventf_leftdown or mouseeventf_leftup, 0, 0, 0, 0

mouse_event mouseeventf_leftdown or mouseeventf_leftup, 0, 0, 0, 0

end if

end sub 

先在程式中加入如下的宣告後,就能引用mouse_event函式:

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)  

模擬鍵盤事件與滑鼠事件

模擬事件 title head body button id mouseeventtrigger 鍵盤模擬按鈕事件 button button id keyboardeventtrigger 按鈕模擬鍵盤事件 button body script varbtn1 document.getelemen...

VB 模擬滑鼠點選 Mouse Event

private declare submouse event lib user32 byval dwflags aslong byval dx as long byval dy as long byval cbuttons aslong byval dwextrainfo aslong const ...

C 模擬鍵盤滑鼠事件

1.模擬鍵盤事件 system.windows.forms.sendkeys 以下是 sendkeys 的一些特殊鍵 表。鍵 backspace 或 break caps lock del 或 delete 或 down arrow 下箭頭鍵 end enter 或 esc help home in...