使用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...