日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

VB模拟按键终极教程

發布時間:2023/12/10 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VB模拟按键终极教程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

VB模擬按鍵終極教程

教程, 模擬
VB模擬按鍵終極教程,有了他,什么游戲都不怕
提示:里面有個小彩蛋,找到了,E里的WINIO你可以自己寫!
? ???鍵盤是我們使用計算機的一個很重要的輸入設備了,即使在鼠標大行其道的今天,很多程序依然離不開鍵盤來操作。但是有時候,一些重復性的,很繁瑣的鍵盤操作總會讓人疲憊,于是就有了用程序來代替人們按鍵的方法,這樣可以把很多重復性的鍵盤操作交給程序來模擬,省了很多精力,按鍵精靈就是這樣的一個軟件。那么我們怎樣才能用VB來寫一個程序,達到與按鍵精靈類似的功能呢?那就讓我們來先了解一下windows中響應鍵盤事件的機制。
? ? 當用戶按下鍵盤上的一個鍵時,鍵盤內的芯片會檢測到這個動作,并把這個信號傳送到計算機。如何區別是哪一個鍵被按下了呢?鍵盤上的所有按鍵都有一個編碼,稱作鍵盤掃描碼。當你按下一個鍵時,這個鍵的掃描碼就被傳給系統。掃描碼是跟具體的硬件相關的,同一個鍵,在不同鍵盤上的掃描碼有可能不同。鍵盤控制器就是將這個掃描碼傳給計算機,然后交給鍵盤驅動程序。鍵盤驅動程序會完成相關的工作,并把這個掃描碼轉換為鍵盤虛擬碼。什么是虛擬碼呢?因為掃描碼與硬件相關,不具有通用性,為了統一鍵盤上所有鍵的編碼,于是就提出了虛擬碼概念。無論什么鍵盤,同一個按鍵的虛擬碼總是相同的,這樣程序就可以識別了。簡單點說,虛擬碼就是我們經常可以看到的像VK_A,VK_B這樣的常數,比如鍵A的虛擬碼是65,寫成16進制就是&H41,注意,人們經常用16進制來表示虛擬碼。當鍵盤驅動程序把掃描碼轉換為虛擬碼后,會把這個鍵盤操作的掃描碼和虛擬碼還有其它信息一起傳遞給操作系統。然后操作系統則會把這些信息封裝在一個消息中,并把這個鍵盤消息插入到消息列隊。最后,要是不出意外的話,這個鍵盤消息最終會被送到當前的活動窗口那里,活動窗口所在的應用程序接收到這個消息后,就知道鍵盤上哪個鍵被按下,也就可以決定該作出什么響應給用戶了。這個過程可以簡單的如下表示:
用戶按下按鍵-----鍵盤驅動程序將此事件傳遞給操作系統-----操作系統將鍵盤事件插入消息隊列-----鍵盤消息被發送到當前活動窗口
明白了這個過程,我們就可以編程實現在其中的某個環節來模擬鍵盤操作了。在VB中,有多種方法可以實現鍵盤模擬,我們就介紹幾種比較典型的。
1.局部級模擬
? ? 從上面的流程可以看出,鍵盤事件是最終被送到活動窗口,然后才引起目標程序響應的。那么最直接的模擬方法就是:直接偽造一個鍵盤消息發給目標程序。哈哈,這實在是很簡單,windows提供了幾個這樣的API函數可以實現直接向目標程序發送消息的功能,常用的有SendMessage和PostMessage,它們的區別是PostMessage函數直接把消息仍給目標程序就不管了,而SendMessage把消息發出去后,還要等待目標程序返回些什么東西才好。這里要注意的是,模擬鍵盤消息一定要用PostMessage函數才好,用SendMessage是不正確的(因為模擬鍵盤消息是不需要返回值的,不然目標程序會沒反應),切記切記!PostMessage函數的VB聲明如下:
Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
參數hwnd 是你要發送消息的目標程序上某個控件句柄,參數wMsg 是消息的類型,表示你要發送什么樣的消息,最后wParam 和lParam 這兩個參數是隨消息附加的數據,具體內容要由消息決定。
再來看看wMsg 這個參數,要模擬按鍵就靠這個了。鍵盤消息常用的有如下幾個:
WM_KEYDOWN? ???表示一個普通鍵被按下
WM_KEYUP? ?? ? 表示一個普通鍵被釋放
WM_SYSKEYDOWN 表示一個系統鍵被按下,比如Alt鍵
WM_SYSKEYUP? ? 表示一個系統鍵被釋放,比如Alt鍵
如果你確定要發送以上幾個鍵盤消息,那么再來看看如何確定鍵盤消息中的wParam 和lParam 這兩個參數。在一個鍵盤消息中,wParam 參數的含義較簡單,它表示你要發送的鍵盤事件的按鍵虛擬碼,比如你要對目標程序模擬按下A鍵,那么wParam 參數的值就設為VK_A ,至于lParam 這個參數就比較復雜了,因為它包含了多個信息,一般可以把它設為0,但是如果你想要你的模擬更真實一些,那么建議你還是設置一下這個參數。那么我們就詳細了解一下lParam 吧。lParam 是一個long類型的參數,它在內存中占4個字節,寫成二進制就是00000000 00000000 00000000 00000000 一共是32位,我們從右向左數,假設最右邊那位為第0位(注意是從0而不是從1開始計數),最左邊的就是第31位,那么該參數的的0-15位表示鍵的發送次數等擴展信息,16-23位為按鍵的掃描碼,24-31位表示是按下鍵還是釋放鍵。大家一般習慣寫成16進制的,那么就應該是&H00 00 00 00 ,第0-15位一般為&H0001,如果是按下鍵,那么24-31位為&H00,釋放鍵則為&HC0,那么16-23位的掃描碼怎么會得呢?這需要用到一個API函數MapVirtualKey,這個函數可以將虛擬碼轉換為掃描碼,或將掃描碼轉換為虛擬碼,還可以把虛擬碼轉換為對應字符的ASCII碼。它的VB聲明如下:
Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As Long
參數wCode 表示待轉換的碼,參數wMapType 表示從什么轉換為什么,如果是虛擬碼轉掃描碼,則wMapType 設置為0,如果是虛擬掃描碼轉虛擬碼,則wMapType 設置為1,如果是虛擬碼轉ASCII碼,則wMapType 設置為2.相信有了這些,我們就可以構造鍵盤事件的lParam參數了。下面給出一個構造lParam參數的函數:
Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As Long
Function MakeKeyLparam(ByVal VirtualKey As Long, ByVal flag As Long) As Long
'參數VirtualKey表示按鍵虛擬碼,flag表示是按下鍵還是釋放鍵,用WM_KEYDOWN和WM_KEYUP這兩個常數表示
? ? Dim s As String
? ? Dim Firstbyte As String? ? 'lparam參數的24-31位
? ? If flag = WM_KEYDOWN Then '如果是按下鍵
? ?? ???Firstbyte = "00"
? ? Else
? ?? ???Firstbyte = "C0"? ?? ? '如果是釋放鍵
? ? End If
? ? Dim Scancode As Long
? ? '獲得鍵的掃描碼
? ? Scancode = MapVirtualKey(VirtualKey, 0)
? ? Dim Secondbyte As String? ?'lparam參數的16-23位,即虛擬鍵掃描碼
? ? Secondbyte = Right("00" & Hex(Scancode), 2)
? ? s = Firstbyte & Secondbyte & "0001" '0001為lparam參數的0-15位,即發送次數和其它擴展信息
? ? MakeKeyLparam = Val("&H" & s)
End Function
這個函數像這樣調用,比如按下A鍵,那么lParam=MakeKeyLparam(VK_A,WM_KEYDOWN) ,很簡單吧。值得注意的是,即使你發送消息時設置了lParam參數的值,但是系統在傳遞消息時仍然可能會根據當時的情況重新設置該參數,那么目標程序收到的消息中lParam的值可能會和你發送時的有所不同。所以,如果你很懶的話,還是直接把它設為0吧,對大多數程序不會有影響的,呵呵。
? ? 好了,做完以上的事情,現在我們可以向目標程序發送鍵盤消息了。首先取得目標程序接受這個消息的控件的句柄,比如目標句柄是12345,那么我們來對目標模擬按下并釋放A鍵,像這樣:(為了簡單起見,lParam這個參數就不構造了,直接傳0)
PostMessage 12345,WM_KEYDOWN,VK_A,0&? ?'按下A鍵
PostMessage 12345,WM_UP,VK_A,0&? ?? ???'釋放A鍵
好了,一次按鍵就完成了。現在你可以迫不及待的打開記事本做實驗,先用FindWindowEx這類API函數找到記事本程序的句柄,再向它發送鍵盤消息,期望記事本里能詭異的自動出現字符。可是你馬上就是失望了,咦,怎么一點反應也沒有?你欺騙感情啊~~~~~~~~~~55555555555555 不是的哦,接著往下看啊。
一般目標程序都會含有多個控件,并不是每個控件都會對鍵盤消息作出反應,只有把鍵盤消息發送給接受它的控件才會得到期望的反應。那記事本來說,它的編輯框其實是個edit類,只有這個控件才對鍵盤事件有反應,如果只是把消息發給記事本的窗體,那是沒有用的。現在你找出記事本那個編輯框的句柄,比如是54321,那么寫如下代碼
PostMessage 54321,WM_KEYDOWN,VK_F1,0&? ?'按下F1鍵
PostMessage 54321,WM_UP,VK_F1,0&? ?? ???'釋放F1鍵
怎么樣,是不是打開了記事本的“幫助”信息?這說明目標程序已經收到了你發的消息,還不錯吧~~~~~~~~
可以馬上新問題就來了,你想模擬向記事本按下A這個鍵,好在記事本里自動輸入字符,可是,沒有任何反應!這是怎么一回事呢?
原來,如果要向目標程序發送字符,光靠WM_KEYDOWN和WM_UP這兩個事件還不行,還需要一個事件:WM_CHAR,這個消息表示一個字符,程序需靠它看來接受輸入的字符。一般只有A,B,C等這樣的按鍵才有WM_CHAR消息,別的鍵(比如方向鍵和功能鍵)是沒有這個消息的,WM_CHAR消息一般發生在WM_KEYDOWN消息之后。WM_CHAR消息的lParam參數的含義與其它鍵盤消息一樣,而它的wParam則表示相應字符的ASCII編碼(可以輸入中文的哦^_^),現在你可以寫出一個完整的向記事本里自動寫入字符的程序了,下面是一個例子,并附有這些消息常數的具體值:
Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As Long
Public Const WM_KEYDOWN = &H100
Public Const WM_KEYUP = &H101
Public Const WM_CHAR = &H102
Public Const VK_A = &H41
Function MakeKeyLparam(ByVal VirtualKey As Long, ByVal flag As Long) As Long
? ? Dim s As String
? ? Dim Firstbyte As String? ? 'lparam參數的24-31位
? ? If flag = WM_KEYDOWN Then '如果是按下鍵
? ?? ???Firstbyte = "00"
? ? Else
? ?? ???Firstbyte = "C0"? ?? ? '如果是釋放鍵
? ? End If
? ? Dim Scancode As Long
? ? '獲得鍵的掃描碼
? ? Scancode = MapVirtualKey(VirtualKey, 0)
? ? Dim Secondbyte As String? ?'lparam參數的16-23位,即虛擬鍵掃描碼
? ? Secondbyte = Right("00" & Hex(Scancode), 2)
? ? s = Firstbyte & Secondbyte & "0001" '0001為lparam參數的0-15位,即發送次數和其它擴展信息
? ? MakeKeyLparam = Val("&H" & s)
End Function
Private Sub Form_Load()
? ? dim hwnd as long
? ? hwnd = XXXXXX 'XXXXX表示記事本編輯框的句柄
? ? PostMessage hwnd,WM_KEYDOWN,VK_A,MakeKeyLparam(VK_A,WM_KEYDOWN) '按下A鍵
? ? PostMessage hwnd,WM_CHAR,ASC("A"),MakeKeyLparam(VK_A,WM_KEYDOWN) '輸入字符A
? ? PostMessage hwnd,WM_UP,VK_A,MakeKeyLparam(VK_A,WM_UP)? ?? ? '釋放A鍵
End Sub
這就是通過局部鍵盤消息來模擬按鍵。這個方法有一個極大的好處,就是:它可以實現后臺按鍵,也就是說他對你的前臺操作不會有什么影響。比如,你可以用這個方法做個程序在游戲中模擬按鍵來不斷地執行某些重復的操作,而你則一邊喝茶一邊與QQ上的MM們聊得火熱,它絲毫不會影響你的前臺操作。無論目標程序是否獲得焦點都沒有影響,這就是后臺模擬按鍵的原理啦~~~~
收藏 分享 評分
回復 引用 訂閱 TOP

zbdehs 發短消息
加為好友
zbdehs 當前離線
UID2558096 帖子230 精華0 積分300 激情649 點 海幣51 枚 游戲幣457 枚 金海幣0 枚 閱讀權限40 在線時間89 小時 注冊時間2008-10-13 最后登錄2008-11-7? ?
掛掛入門
帖子230 積分300 激情649 點 海幣51 枚 閱讀權限40 沙發 發表于 2008-10-17 10:53 | 只看該作者 在線充值論壇海幣,輕松提升論壇等級,充100海幣只需1元---點擊在線充值金海幣
2.全局級模擬
? ? 你會發現,用上面的方法模擬按鍵并不是對所有程序都有效的,有的程序啊,你向它發了一大堆消息,可是它卻一點反應也沒有。這是怎么回事呢?這就要看具體的情況了,有些程序(特別是一些游戲)出于某些原因,會禁止用戶對它使用模擬按鍵程序,這個怎么實現呢?比如可以在程序中檢查一下,如果發現自己不是活動窗口,就不接受鍵盤消息。或者仔細檢查一下收到的鍵盤消息,你會發現真實的按鍵和模擬的按鍵消息總是有一些小差別,從這些小差別上,目標程序就能判斷出:這是假的!是偽造的!!因此,如果用PostMessage發送局部消息模擬按鍵不成功的話,你可以試一試全局級的鍵盤消息,看看能不能騙過目標程序。
模擬全局鍵盤消息常見的可以有以下一些方法:
(1) 用API函數keybd_event,這個函數可以用來模擬一個鍵盤事件,它的VB聲明為:
Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
參數bVk表示要模擬的按鍵的虛擬碼,bScan表示該按鍵的掃描碼(一般可以傳0),dwFlags表示是按下鍵還是釋放鍵(按下鍵為0,釋放鍵為2),dwExtraInfo是擴展標志,一般沒有用。比如要模擬按下A鍵,可以這樣:
Const KEYEVENTF_KEYUP = &H2
keybd_event VK_A, 0, 0, 0? ?'按下A鍵
keybd_event VK_A, 0, KEYEVENTF_KEYUP, 0? ?'釋放A鍵
注意有時候按鍵的速度不要太快,否則會出問題,可以用API函數Sleep來進行延時,聲明如下:
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
參數dwMilliseconds表示延時的時間,以毫秒為單位。
那么如果要模擬按下功能鍵怎么做呢?比如要按下Ctrl+C實現拷貝這個功能,可以這樣:
keybd_event VK_Ctrl, 0, 0, 0? ?'按下Ctrl鍵
keybd_event VK_C, 0, 0, 0? ?? ?'按下C鍵
Sleep 500? ?? ?? ?? ?'延時500毫秒
keybd_event VK_C, 0, KEYEVENTF_KEYUP, 0? ?'釋放C鍵
keybd_event VK_Ctrl, 0, KEYEVENTF_KEYUP, 0? ?'釋放Ctrl鍵
好了,現在你可以試試是不是可以騙過目標程序了,這個函數對大部分的窗口程序都有效,可是仍然有一部分游戲對它產生的鍵盤事件熟視無睹,這時候,你就要用上bScan這個參數了。一般的,bScan都傳0,但是如果目標程序是一些DirectX游戲,那么你就需要正確使用這個參數傳入掃描碼,用了它可以產生正確的硬件事件消息,以被游戲識別。這樣的話,就可以寫成這樣:
keybd_event VK_A, MapVirtualKey(VK_A, 0), 0, 0? ?'按下A鍵
keybd_event VK_A, MapVirtualKey(VK_A, 0), KEYEVENTF_KEYUP, 0? ?'釋放A鍵
以上就是用keybd_event函數來模擬鍵盤事件。除了這個函數,SendInput函數也可以模擬全局鍵盤事件。SendInput可以直接把一條消息插入到消息隊列中,算是比較底層的了。它的VB聲明如下:
Declare Function SendInput Lib "user32.dll" (ByVal nInputs As Long, pInputs As GENERALINPUT, ByVal cbSize As Long) As Long
參數:
nlnprts:定義plnputs指向的結構的數目。
plnputs:指向INPUT結構數組的指針。每個結構代表插人到鍵盤或鼠標輸入流中的一個事件。
cbSize:定義INPUT結構的大小。若cbSize不是INPUT結構的大小,則函數調用失敗。
返回值:函數返回被成功地插人鍵盤或鼠標輸入流中的事件的數目。若要獲得更多的錯誤信息,可以調用GetlastError函數。
備注:Sendlnput函數將INPUT結構中的事件順序地插入鍵盤或鼠標的輸入流中。這些事件與用戶插入的(用鼠標或鍵盤)或調用keybd_event,mouse_event,或另外的Sendlnput插人的鍵盤或鼠標的輸入流不兼容。
嗯,這個函數用起來蠻復雜的,因為它的參數都是指針一類的東西。要用它來模擬鍵盤輸入,先要構造一組數據結構,把你要模擬的鍵盤消息裝進去,然后傳給它。為了方便起見,把它做在一個過程里面,要用的時候直接調用好了,代碼如下:
Declare Function SendInput Lib "user32.dll" (ByVal nInputs As Long, pInputs As GENERALINPUT, ByVal cbSize As Long) As Long
Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)
Type GENERALINPUT
? ?dwType As Long
? ?xi(0 To 23) As Byte
End Type
Type KEYBDINPUT
wVk As Integer
wScan As Integer
dwFlags As Long
time As Long
dwExtraInfo As Long
End Type
Const INPUT_KEYBOARD = 1
Sub MySendKey(bkey As Long)
'參數bkey傳入要模擬按鍵的虛擬碼即可模擬按下指定鍵
Dim GInput(0 To 1) As GENERALINPUT
Dim KInput As KEYBDINPUT
KInput.wVk = bkey '你要模擬的按鍵
KInput.dwFlags = 0 '按下鍵標志
GInput(0).dwType = INPUT_KEYBOARD
CopyMemory GInput(0).xi(0), KInput, Len(KInput) '這個函數用來把內存中KInput的數據復制到GInput
KInput.wVk = bkey
KInput.dwFlags = KEYEVENTF_KEYUP ' 釋放按鍵
GInput(1).dwType = INPUT_KEYBOARD ' 表示該消息為鍵盤消息
CopyMemory GInput(1).xi(0), KInput, Len(KInput)
'以上工作把按下鍵和釋放鍵共2條鍵盤消息加入到GInput數據結構中
SendInput 2, GInput(0), Len(GInput(0))? ? '把GInput中存放的消息插入到消息列隊
End Sub
? ? 除了以上這些,用全局鉤子也可以模擬鍵盤消息。如果你對windows中消息鉤子的用法已經有所了解,那么你可以通過設置一個全局HOOK來模擬鍵盤消息,比如,你可以用WH_JOURNALPLAYBACK這個鉤子來模擬按鍵。WH_JOURNALPLAYBACK是一個系統級的全局鉤子,它和WH_JOURNALRECORD的功能是相對的,常用它們來記錄并回放鍵盤鼠標操作。WH_JOURNALRECORD鉤子用來將鍵盤鼠標的操作忠實地記錄下來,記錄下來的信息可以保存到文件中,而WH_JOURNALPLAYBACK則可以重現這些操作。當然亦可以單獨使用WH_JOURNALPLAYBACK來模擬鍵盤操作。你需要首先聲明SetWindowsHookEx函數,它可以用來安裝消息鉤子:
Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long,ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
先安裝WH_JOURNALPLAYBACK這個鉤子,然后你需要自己寫一個鉤子函數,在系統調用它時,把你要模擬的事件傳遞給鉤子參數lParam所指向的EVENTMSG區域,就可以達到模擬按鍵的效果。不過用這個鉤子模擬鍵盤事件有一個副作用,就是它會鎖定真實的鼠標鍵盤,不過如果你就是想在模擬的時候不會受真實鍵盤操作的干擾,那么用用它倒是個不錯的主意。
3.驅動級模擬
? ? 如果上面的方法你都試過了,可是你發現目標程序卻仍然頑固的不接受你模擬的消息,寒~~~~~~~~~還好,我還剩下最后一招,這就是驅動級模擬:直接讀寫鍵盤的硬件端口!
? ? 有一些使用DirectX接口的游戲程序,它們在讀取鍵盤操作時繞過了windows的消息機制,而使用DirectInput.這是因為有些游戲對實時性控制的要求比較高,比如賽車游戲,要求以最快速度響應鍵盤輸入。而windows消息由于是隊列形式的,消息在傳遞時會有不少延遲,有時1秒鐘也就傳遞十幾條消息,這個速度達不到游戲的要求。而DirectInput則繞過了windows消息,直接與鍵盤驅動程序打交道,效率當然提高了不少。因此也就造成,對這樣的程序無論用PostMessage或者是keybd_event都不會有反應,因為這些函數都在較高層。對于這樣的程序,只好用直接讀寫鍵盤端口的方法來模擬硬件事件了。要用這個方法來模擬鍵盤,需要先了解一下鍵盤編程的相關知識。
外掛作坊正版模塊(制作外掛專用)245元終身. 只需380元,附送兩模塊三論壇VIP特權!
回復 引用 TOP

zbdehs 發短消息
加為好友
zbdehs 當前離線
UID2558096 帖子230 精華0 積分300 激情649 點 海幣51 枚 游戲幣457 枚 金海幣0 枚 閱讀權限40 在線時間89 小時 注冊時間2008-10-13 最后登錄2008-11-7? ?
掛掛入門
帖子230 積分300 激情649 點 海幣51 枚 閱讀權限40 板凳 發表于 2008-10-17 10:54 | 只看該作者? ???在DOS時代,當用戶按下或者放開一個鍵時,就會產生一個鍵盤中斷(如果鍵盤中斷是允許的),這樣程序會跳轉到BIOS中的鍵盤中斷處理程序去執行。打開windows的設備管理器,可以查看到鍵盤控制器由兩個端口控制。其中&H60是數據端口,可以讀出鍵盤數據,而&H64是控制端口,用來發出控制信號。也就是,從&H60號端口可以讀此鍵盤的按鍵信息,當從這個端口讀取一個字節,該字節的低7位就是按鍵的掃描碼,而高1位則表示是按下鍵還是釋放鍵。當按下鍵時,最高位為0,稱為通碼,當釋放鍵時,最高位為1,稱為斷碼。既然從這個端口讀數據可以獲得按鍵信息,那么向這個端口寫入數據就可以模擬按鍵了!用過QbASIC4.5的朋友可能知道,QB中有個OUT命令可以向指定端口寫入數據,而INP函數可以讀取指定端口的數據。那我們先看看如果用QB該怎么寫代碼:
假如你想模擬按下一個鍵,這個鍵的掃描碼為&H50,那就這樣
OUT &H64,&HD2? ?'把數據&HD2發送到&H64端口。這是一個KBC指令,表示將要向鍵盤寫入數據
OUT &H60,&H50? ?'把掃描碼&H50發送到&H60端口,表示模擬按下掃描碼為&H50的這個鍵
那么要釋放這個鍵呢?像這樣,發送該鍵的斷碼:
OUT &H64,&HD2? ?'把數據&HD2發送到&H64端口。這是一個KBC指令,表示將要向鍵盤寫入數據
OUT &H60,(&H50 OR &H80)? ?'把掃描碼&H50與數據&H80進行或運算,可以把它的高位置1,得到斷碼,表示釋放這個鍵
? ? 好了,現在的問題就是在VB中如何向端口寫入數據了。因為在windows中,普通應用程序是無權操作端口的,于是我們就需要一個驅動程序來幫助我們實現。在這里我們可以使用一個組件WINIO來完成讀寫端口操作。什么是WINIO?WINIO是一個全免費的、無需注冊的、含源程序的WINDOWS2000端口操作驅動程序組件(可以到http://www.internals.com/上去下載)。它不僅可以操作端口,還可以操作內存;不僅能在VB下用,還可以在DELPHI、VC等其它環境下使用,性能特別優異。下載該組件,解壓縮后可以看到幾個文件夾,其中Release文件夾下的3個文件就是我們需要的,這3個文件是WinIo.sys(用于win xp下的驅動程序),WINIO.VXD(用于win 98下的驅動程序),WinIo.dll(封裝函數的動態鏈接庫),我們只需要調用WinIo.dll中的函數,然后WinIo.dll就會安裝并調用驅動程序來完成相應的功能。值得一提的是這個組件完全是綠色的,無需安裝,你只需要把這3個文件復制到與你的程序相同的文件夾下就可以使用了。用法很簡單,先用里面的InitializeWinIo函數安裝驅動程序,然后就可以用GetPortVal來讀取端口或者用SetPortVal來寫入端口了。好,讓我們來做一個驅動級的鍵盤模擬吧。先把winio的3個文件拷貝到你的程序的文件夾下,然后在VB中新建一個工程,添加一個模塊,在模塊中加入下面的winio函數聲明:
Declare Function MapPhysToLin Lib "WinIo.dll" (ByVal PhysAddr As Long, ByVal PhysSize As Long, ByRef PhysMemHandle) As Long
Declare Function UnmapPhysicalMemory Lib "WinIo.dll" (ByVal PhysMemHandle, ByVal LinAddr) As Boolean
Declare Function GetPhysLong Lib "WinIo.dll" (ByVal PhysAddr As Long, ByRef PhysVal As Long) As Boolean
Declare Function SetPhysLong Lib "WinIo.dll" (ByVal PhysAddr As Long, ByVal PhysVal As Long) As Boolean
Declare Function GetPortVal Lib "WinIo.dll" (ByVal PortAddr As Integer, ByRef PortVal As Long, ByVal bSize As Byte) As Boolean
Declare Function SetPortVal Lib "WinIo.dll" (ByVal PortAddr As Integer, ByVal PortVal As Long, ByVal bSize As Byte) As Boolean
Declare Function InitializeWinIo Lib "WinIo.dll" () As Boolean
Declare Function ShutdownWinIo Lib "WinIo.dll" () As Boolean
Declare Function InstallWinIoDriver Lib "WinIo.dll" (ByVal DriverPath As String, ByVal Mode As Integer) As Boolean
Declare Function RemoveWinIoDriver Lib "WinIo.dll" () As Boolean
' ------------------------------------以上是WINIO函數聲明-------------------------------------------
Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As Long
'-----------------------------------以上是WIN32 API函數聲明-----------------------------------------
再添加下面這個過程:
Sub KBCWait4IBE()? ?'等待鍵盤緩沖區為空
Dim dwVal As Long
Do
GetPortVal &H64, dwVal, 1
'這句表示從&H64端口讀取一個字節并把讀出的數據放到變量dwVal中
'GetPortVal函數的用法是GetPortVal 端口號,存放讀出數據的變量,讀入的長度
Loop While (dwVal And &H2)
End Sub
上面的是一個根據KBC規范寫的過程,它的作用是在向鍵盤端口寫入數據前等待一段時間,后面將會用到。
然后再添加如下過程,這2個過程用來模擬按鍵:
Public Const KBC_KEY_CMD = &H64? ? '鍵盤命令端口
Public Const KBC_KEY_DATA = &H60? ?'鍵盤數據端口
Sub MyKeyDown(ByVal vKeyCoad As Long)? ?
'這個用來模擬按下鍵,參數vKeyCoad傳入按鍵的虛擬碼
Dim btScancode As Long
btScancode = MapVirtualKey(vKeyCoad, 0)

? ? KBCWait4IBE? ?'發送數據前應該先等待鍵盤緩沖區為空
? ? SetPortVal KBC_KEY_CMD, &HD2, 1? ???'發送鍵盤寫入命令
'SetPortVal函數用于向端口寫入數據,它的用法是SetPortVal 端口號,欲寫入的數據,寫入數據的長度
? ? KBCWait4IBE
? ? SetPortVal KBC_KEY_DATA, btScancode, 1 '寫入按鍵信息,按下鍵
? ?
End Sub
Sub MyKeyUp(ByVal vKeyCoad As Long)? ?
'這個用來模擬釋放鍵,參數vKeyCoad傳入按鍵的虛擬碼
Dim btScancode As Long
btScancode = MapVirtualKey(vKeyCoad, 0)

? ? KBCWait4IBE? ?'等待鍵盤緩沖區為空
? ? SetPortVal KBC_KEY_CMD, &HD2, 1 '發送鍵盤寫入命令
? ? KBCWait4IBE
? ? SetPortVal KBC_KEY_DATA, (btScancode Or &H80), 1 '寫入按鍵信息,釋放鍵
End Sub
定義了上面的過程后,就可以用它來模擬鍵盤輸入了。在窗體模塊中添加一個定時器控件,然后加入以下代碼:
Private Sub Form_Load()
If InitializeWinIo = False Then? ?
'用InitializeWinIo函數加載驅動程序,如果成功會返回true,否則返回false
? ? MsgBox "驅動程序加載失敗!"
? ? Unload Me
End If
Timer1.Interval=3000
Timer1.Enabled=True
End Sub
Private Sub Form_Unload(Cancel As Integer)
ShutdownWinIo '程序結束時記得用ShutdownWinIo函數卸載驅動程序
End Sub
Private Sub Timer1_Timer()
Dim VK_A as Long = &H41
MyKeyDown VK_A? ?
MyKeyUp VK_A? ? '模擬按下并釋放A鍵
End Sub
[/quote]
運行上面的程序,就會每隔3秒鐘模擬按下一次A鍵,試試看,怎么樣,是不是對所有程序都有效果了?
需要注意的問題:
要在VB的調試模式下使用WINIO,需要把那3個文件拷貝到VB的安裝目錄中。
鍵盤上有些鍵屬于擴展鍵(比如鍵盤上的方向鍵就是擴展鍵),對于擴展鍵不應該用上面的MyKeyDown和MyKeyUp過程來模擬,可以使用下面的2個過程來準確模擬擴展鍵:
Sub MyKeyDownEx(ByVal vKeyCoad As Long)? ?'模擬擴展鍵按下,參數vKeyCoad是擴展鍵的虛擬碼
Dim btScancode As Long
btScancode = MapVirtualKey(vKeyCoad, 0)
? ? KBCWait4IBE? ?'等待鍵盤緩沖區為空
? ? SetPortVal KBC_KEY_CMD, &HD2, 1? ???'發送鍵盤寫入命令
? ? KBCWait4IBE
? ? SetPortVal KBC_KEY_DATA, &HE0, 1 '寫入擴展鍵標志信息
? ?
? ?
? ? KBCWait4IBE? ?'等待鍵盤緩沖區為空
? ? SetPortVal KBC_KEY_CMD, &HD2, 1? ???'發送鍵盤寫入命令
? ? KBCWait4IBE
? ? SetPortVal KBC_KEY_DATA, btScancode, 1 '寫入按鍵信息,按下鍵
? ?
? ?
End Sub
Sub MyKeyUpEx(ByVal vKeyCoad As Long)? ?'模擬擴展鍵彈起
Dim btScancode As Long
btScancode = MapVirtualKey(vKeyCoad, 0)
? ? KBCWait4IBE? ?'等待鍵盤緩沖區為空
? ? SetPortVal KBC_KEY_CMD, &HD2, 1? ???'發送鍵盤寫入命令
? ? KBCWait4IBE
? ? SetPortVal KBC_KEY_DATA, &HE0, 1 '寫入擴展鍵標志信息
? ?
? ?
? ? KBCWait4IBE? ?'等待鍵盤緩沖區為空
? ? SetPortVal KBC_KEY_CMD, &HD2, 1? ???'發送鍵盤寫入命令
? ? KBCWait4IBE
? ? SetPortVal KBC_KEY_DATA, (btScancode Or &H80), 1 '寫入按鍵信息,釋放鍵
? ?
End Sub
還應該注意的是,如果要從擴展鍵轉換到普通鍵,那么普通鍵的KeyDown事件應該發送兩次。也就是說,如果我想模擬先按下一個擴展鍵,再按下一個普通鍵,那么就應該向端口發送兩次該普通鍵被按下的信息。比如,我想模擬先按下左方向鍵,再按下空格鍵這個事件,由于左方向鍵是擴展鍵,空格鍵是普通鍵,那么流程就應該是這樣的:
[quote]MyKeyDownEx VK_LEFT? ?'按下左方向鍵
Sleep 200? ?? ?? ?? ? '延時200毫秒
MyKeyUpEx VK_LEFT? ???'釋放左方向鍵
Sleep 500
MyKeyDown VK_SPACE? ?'按下空格鍵,注意要發送兩次
MyKeyDown VK_SPACE
Sleep 200
MyKeyUp VK_SPACE? ???'釋放空格鍵
好了,相信到這里,你的模擬按鍵程序也就差不多了,測試一下,是不是很有效呢,嘿嘿~~~~
WINIO組件的下載地址http://www.114vip.com.cn/download/winio.zip
4.骨灰級模擬
? ? 方法3算是很底層的模擬了,我現在還沒有發現有它模擬無效的程序。但是如果你用盡上面所有的方法,仍然無效的話,那么還有最后一個方法,絕對對任何程序都會有效,那就是:把鍵盤拿出來,老老實實地按下去吧。~~~~

總結

以上是生活随笔為你收集整理的VB模拟按键终极教程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

成人中文字幕在线观看 | 国产精品久久久久久久久久不蜜月 | 国产在线精品一区二区三区 | 99国产精品免费网站 | 国内精品久久久久久 | 在线观看黄 | 97品白浆高清久久久久久 | 国产成人av网站 | 狠狠狠操| 国产精品门事件 | 免费日韩一区二区三区 | 在线成人一区 | 青青五月天| 综合色中文 | 九九热免费观看 | 最近2019好看的中文字幕免费 | 精品a在线 | 中文字幕在线观看一区二区 | 91精品婷婷国产综合久久蝌蚪 | 亚洲无吗av | 欧美一级在线观看视频 | 久久久久久美女 | 在线观看视频在线 | 二区中文字幕 | 精品欧美乱码久久久久久 | 丰满少妇麻豆av | 日韩视频专区 | 亚洲资源一区 | 久久夜夜爽 | 国产精品麻豆99久久久久久 | 亚洲永久精品在线 | 久久香蕉国产精品麻豆粉嫩av | 久久久午夜视频 | 亚洲精品午夜国产va久久成人 | 精品国产一区二区三区久久影院 | 国产亚州av | 国产成人专区 | 91九色成人 | 欧美性春潮 | 日韩免费一区二区三区 | 夜色资源站国产www在线视频 | 91av视频播放 | 午夜视频在线观看一区二区三区 | 亚洲精品国产精品国自产观看浪潮 | 日日日操| 激情婷婷在线观看 | 精品久久视频 | 成人天堂网 | 精品国产免费人成在线观看 | 久久久免费电影 | 久久国产热 | 一级黄色a视频 | 丝袜美腿亚洲 | 日韩欧美电影 | 免费福利片 | 久久久久成人精品亚洲国产 | 亚洲成人免费在线观看 | 亚洲成人av片在线观看 | 午夜视频99 | 亚洲精品在线观看av | 国产精品久久久久久久免费大片 | 91精品视频在线观看免费 | 久久在线视频在线 | 丰满少妇在线观看 | 欧美日韩国产精品一区二区亚洲 | 中文字幕传媒 | 久久中文字幕导航 | 日韩精品视频在线观看免费 | 亚洲视屏一区 | 国产精品综合在线观看 | 亚洲国产网址 | 欧美久久九九 | 午夜少妇一区二区三区 | 日韩精品不卡在线观看 | 天天射天天艹 | 超碰人人在线观看 | 日本精品一二区 | 99九九热只有国产精品 | 中文在线a天堂 | 91免费视频网站在线观看 | 911久久 | 色香蕉在线视频 | 亚洲永久av | 激情婷婷 | 久久国产精品精品国产色婷婷 | www操操操 | 一区在线播放 | 亚洲三级黄色 | 超碰在线色| 久久综合狠狠 | 丰满少妇对白在线偷拍 | 国产在线中文 | 亚洲欧美日韩在线看 | 国产一线在线 | 人成免费网站 | 午夜私人影院 | 欧美日本一二三 | 91av蜜桃| 亚洲电影成人 | 91精品国产成人www | 91丨九色丨91啦蝌蚪老版 | 九草视频在线 | 免费看黄的| 最新极品jizzhd欧美 | 在线播放国产一区二区三区 | 成人小视频免费在线观看 | 正在播放国产一区二区 | 超碰97人人爱 | 欧美精品亚洲精品日韩精品 | 国产精品亚洲综合久久 | www.xxx.性狂虐 | 夜色.com | 国产婷婷在线观看 | 又黄又爽又无遮挡的视频 | 欧美极品久久 | 亚洲h色精品| 成人免费一区二区三区在线观看 | 色在线免费观看 | 免费看一级片 | 日韩一区二区三区高清在线观看 | 成人h电影| 欧美a级在线播放 | 中文字幕国产在线 | 国产在线v | 久久久久久久久久久久久久av | 伊人五月 | 天天操天天操天天操天天 | 一区二区三区四区五区在线 | 丁香六月婷婷综合 | free,性欧美 九九交易行官网 | 亚洲国产精品500在线观看 | 精品视频专区 | 国产免费午夜 | 久久人人爽视频 | 91桃色国产在线播放 | 日韩免费久久 | 亚洲最新av在线 | av福利在线播放 | 亚洲精品视频免费看 | 成人精品一区二区三区电影免费 | 国产精品一区二区av | 五月天av在线 | 国产精品区免费视频 | 日本成人黄色片 | av一级网站| 国产精品久久久久久影院 | 亚洲a网 | 伊人久久五月天 | 日韩中文字幕免费视频 | 九九精品视频在线观看 | 久久久电影网站 | 国产五月 | 日日操天天操狠狠操 | 亚洲精品国产精品国自产观看 | 欧美国产日韩一区二区三区 | 免费a级黄色毛片 | 色九九影院 | 六月丁香综合网 | 久久久黄色 | 欧美色888 | av看片在线 | 久热av | 亚洲六月丁香色婷婷综合久久 | 日韩欧美视频一区二区 | 欧美日韩另类在线观看 | 国产在线理论片 | 久久激情综合 | 免费看黄在线 | 精品国产伦一区二区三区 | 在线观看久久久久久 | 欧美日韩xxx| 三上悠亚一区二区在线观看 | 国产97av| 国产一区二区播放 | 丁香婷婷在线观看 | 久久丁香 | 亚洲黄色免费在线看 | 久久视频这里有久久精品视频11 | 黄av免费在线观看 | 亚洲第一香蕉视频 | 国产精品成人国产乱一区 | 在线精品亚洲一区二区 | 日本一区二区免费在线观看 | 五月婷婷中文 | 草久久久久 | 玖玖视频国产 | 日韩综合在线观看 | 欧美精品国产精品 | 国产 成人 久久 | 国产精品久久二区 | 中文区中文字幕免费看 | 色爱区综合激月婷婷 | 91亚色免费视频 | 伊人影院在线观看 | 久久国产免费视频 | 国产成人一区二区三区影院在线 | 日日操日日插 | 日韩a级黄色片 | 丁香影院在线 | 婷婷综合伊人 | 六月丁香婷婷网 | 俺要去色综合狠狠 | 成人一级视频在线观看 | 日本黄色免费在线观看 | 成人av资源网站 | 99久久精品日本一区二区免费 | 欧美精品久久久久久久久免 | 日韩在线免费视频 | 1024手机在线看 | 国产精品99久久久精品免费观看 | 久草av在线播放 | 亚洲午夜久久久久久久久电影网 | 国产高清免费观看 | 欧美一区免费观看 | 国内精品国产三级国产aⅴ久 | 黄色天堂在线观看 | 国产精品免费观看久久 | 欧美日韩免费在线视频 | 日韩av三区 | 国产一级片免费观看 | 三上悠亚一区二区在线观看 | 日韩综合精品 | 99久久精品免费看国产麻豆 | 不卡的av在线播放 | 国产91在线看 | 国产精品99久久久 | 国产毛片在线 | 99热都是精品| 色婷婷成人网 | 美女精品在线观看 | 人人澡人人爽 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | av天天在线观看 | 色综合久久88色综合天天人守婷 | 999久久| 国产又粗又猛又爽 | 国产美女在线精品免费观看 | 日日夜夜综合 | 久章操| 国产精品高潮呻吟久久久久 | 久久久首页| 黄色影院在线免费观看 | 亚洲影音先锋 | 制服丝袜欧美 | www.99热精品| 日本三级国产 | 96av在线视频 | 天天爽综合网 | 日韩午夜一级片 | 国产日韩精品在线观看 | 国产在线观看地址 | 成人av片在线观看 | 亚洲精品黄色 | 草樱av | 在线草 | 成人网大片 | 亚洲免费在线播放视频 | 97超级碰 | 人人干人人爽 | av专区在线 | 草久电影 | av手机在线播放 | 永久免费的av电影 | 天天天综合网 | 夜夜操狠狠操 | 久久久久久久久久久久亚洲 | 成人黄色视| 91看片成人 | 激情综合亚洲 | 波多野结衣精品 | 波多野结衣一区二区 | 日韩欧美一区二区在线观看 | 国产污视频在线观看 | 狠狠色丁香婷综合久久 | 精品国产三级a∨在线欧美 免费一级片在线观看 | 中文字幕一区二区三区在线播放 | 天天摸天天干天天操天天射 | 视频一区亚洲 | 精品久久网站 | 欧美中文字幕久久 | 免费观看版 | 91久久偷偷做嫩草影院 | 黄色国产在线观看 | 成人国产精品入口 | 在线观看国产高清视频 | 国产高清在线免费视频 | 国产精品国产三级在线专区 | 亚洲91视频 | 天天艹天天爽 | 久草在线一免费新视频 | 97人人超碰在线 | 伊人狠狠干 | 亚洲视屏在线播放 | 婷婷开心久久网 | 黄色大片日本 | 国产高清在线免费视频 | 国产中的精品av小宝探花 | 国产精品99免视看9 国产精品毛片一区视频 | 国产精品av在线免费观看 | 国产看片免费 | 日韩一区二区三区高清免费看看 | 在线播放国产一区二区三区 | 国产精品女人久久久 | 久久婷婷精品视频 | 超碰最新网址 | 欧美一区二区在线 | 狠狠干网 | 久福利 | 天堂av免费在线 | 97视频总站| 色五月成人 | 深爱激情综合网 | 成人福利在线观看 | 亚洲黄色免费电影 | 精品国产电影一区二区 | 久久综合九色综合久99 | 久久精品视频免费 | 中文字幕一区二区三区在线观看 | 国产精品青青 | 日韩久久午夜一级啪啪 | 婷婷色中文字幕 | 免费午夜网站 | 日韩欧美久久 | 日韩在线电影观看 | 香蕉久久久久久av成人 | 在线观看亚洲免费视频 | 国产欧美日韩精品一区二区免费 | 久久久网 | 国产69精品久久久久99 | 久久久久久久久久久网 | av黄色影院 | 国产精品18久久久久久不卡孕妇 | 香蕉久草 | av片免费播放 | av在线免费观看黄 | 国产高清中文字幕 | 欧美极度另类性三渗透 | 国产亚洲va综合人人澡精品 | av一级免费 | 日韩专区在线播放 | 91精品国产成人www | 81精品国产乱码久久久久久 | 美女视频久久久 | 91av在线精品 | 中文字幕日韩伦理 | 色香蕉在线视频 | 黄色一级在线观看 | 国产精品国产亚洲精品看不卡15 | 日韩欧美在线不卡 | 在线午夜电影神马影院 | 国产日韩欧美自拍 | 99精品电影| 18av在线视频| 久久人人爽爽人人爽人人片av | 日韩欧美一区二区在线播放 | 一区二区三区韩国免费中文网站 | 色婷婷啪啪免费在线电影观看 | 国产一区二区三区免费视频 | 色www精品视频在线观看 | 91喷水 | 欧美日韩一区二区三区在线观看视频 | 国产对白av | 手机看片中文字幕 | 综合网伊人 | 日韩中文字幕视频在线 | 色片网站在线观看 | 成人av手机在线 | 在线一二三四区 | 日韩免费一区二区 | 亚洲日本欧美在线 | 一区二区视频在线免费观看 | 五月婷在线视频 | 国产美女免费观看 | 久久躁日日躁aaaaxxxx | 高清国产午夜精品久久久久久 | 久久精品久久99 | 国产高清视频在线观看 | 国产免费又爽又刺激在线观看 | 最近中文字幕免费视频 | 中文字幕网址 | 成人在线观看影院 | 97超碰在线久草超碰在线观看 | 国产精品亚洲成人 | 久久久在线视频 | 射综合网 | 国产高清视频在线观看 | 亚洲成人一区 | 国产精品丝袜 | 色播五月激情五月 | 欧美一级日韩免费不卡 | www.成人久久 | 日韩av一区二区在线影视 | 久久国产美女 | 江苏妇搡bbbb搡bbbb | 天天操操 | 在线观看91精品国产网站 | 99热这里只有精品8 久久综合毛片 | 欧美性天天 | 国产精选在线观看 | 亚洲视频免费在线 | 黄色网www | 一区二区三区精品在线视频 | 国产精品一区二区三区四 | 国产黄色片免费在线观看 | 国产一区二区三区视频在线 | 成人av亚洲 | 美女露久久 | 婷婷干五月| 日本最新中文字幕 | 国产黄大片在线观看 | 天天综合成人网 | 91久久精品一区二区三区 | 日韩在线观看网站 | 三级视频片| 九九热久久久 | 国产在线看一区 | 久久国产片 | 精品在线小视频 | 久久久国产影视 | 国产美女网站视频 | 久久污视频| 国产精选在线观看 | 日韩在线免费 | 久艹在线免费观看 | 日韩在线播放视频 | 欧美另类调教 | 2000xxx影视| 国产精品一区二区av日韩在线 | 欧美日韩一级久久久久久免费看 | 亚洲视频在线免费观看 | 99这里只有久久精品视频 | 免费一级片视频 | 免费在线电影网址大全 | 日韩欧美99| 丁香花中文在线免费观看 | 69视频国产 | 午夜精品一区二区三区免费视频 | 色久网 | 在线韩国电影免费观影完整版 | 免费高清av在线看 | 婷婷六月天丁香 | 国产精品久久久久久久久软件 | 久久久国产一区二区三区 | 日韩免费在线播放 | 激情网在线视频 | 久久免费视频在线观看 | 91午夜精品 | 中文字幕电影网 | 99在线观看 | 久久激情久久 | 99热在线看 | 日韩av不卡在线观看 | 免费99精品国产自在在线 | 黄色av观看 | 国产男女无遮挡猛进猛出在线观看 | 91av在线免费 | 美女免费视频一区二区 | 欧美性极品xxxx做受 | 久久精品99久久久久久2456 | 精品久久久久久久久久 | 天天夜夜亚洲 | 四虎5151久久欧美毛片 | 中文字幕高清 | 激情网五月 | 中文亚洲欧美日韩 | 日韩欧美国产视频 | 97在线视频免费播放 | 欧美综合在线观看 | 精品夜夜嗨av一区二区三区 | www.国产在线观看 | 成人黄色大片在线免费观看 | www久久久久| 日韩精品一区二区三区中文字幕 | 欧美韩国在线 | 久99久在线视频 | 亚洲一区二区三区精品在线观看 | 综合网中文字幕 | 91最新视频在线观看 | 国产高清视频在线免费观看 | 国产精品精品国产婷婷这里av | 免费色av| 日韩国产欧美在线视频 | 亚洲欧洲视频 | 婷婷丁香在线视频 | 女人高潮特级毛片 | 狠狠操操网 | 九九热在线播放 | 亚洲视频精品 | 成人欧美一区二区三区在线观看 | 日日夜夜添 | 美女黄频视频大全 | av看片网址| 久久视频在线 | 久久亚洲精品国产亚洲老地址 | 久草在线视频在线 | 国产区第一页 | 国产一区二区不卡视频 | 久久成电影 | 美女网站视频色 | 香蕉97视频观看在线观看 | 久久成人一区二区 | 欧美日韩久久 | 日日操操 | 四虎影视久久久 | 亚洲综合成人婷婷小说 | 国产精品欧美久久久久天天影视 | 亚洲精品久久久蜜臀下载官网 | 国产精品理论片 | 成人免费网站在线观看 | 欧美日韩一区二区三区视频 | 麻豆视频国产在线观看 | 久久超| 天天色天 | 久草综合视频 | 久久电影国产免费久久电影 | 麻豆视频免费在线观看 | 国产99久久99热这里精品5 | 激情综合久久 | 综合网成人 | 精品久久久久久久久亚洲 | www免费看片com | 国产粉嫩在线 | 成年人免费在线播放 | www.久草视频 | 亚洲精品456在线播放 | 午夜视频免费播放 | 69性欧美 | www免费黄色 | 亚洲91av| 亚洲在线资源 | 天天操天天射天天舔 | 天天射网站 | 久久黄页 | 婷婷丁香七月 | 人人要人人澡人人爽人人dvd | 成全在线视频免费观看 | 黄色中文字幕在线 | 成人国产网址 | 99久久精品午夜一区二区小说 | 国产 日韩 欧美 在线 | 久久黄色影视 | 午夜性福利 | 国产一区二区精品91 | 9幺看片 | 婷婷激情五月 | 天天干天天干天天干 | 欧美性网站 | 极品久久久久 | 日韩电影一区二区三区在线观看 | 西西www4444大胆视频 | 99一区二区三区 | 久久国产成人午夜av影院潦草 | 超碰在线cao | 午夜视频免费 | 久久久久久久久久伊人 | 中文字幕丰满人伦在线 | 香蕉在线视频播放网站 | 狠狠色狠狠综合久久 | 97在线观看免费高清完整版在线观看 | 国产精品毛片一区二区在线看 | 久久久久免费视频 | 欧美一级电影免费观看 | av丝袜在线 | 国产在线97 | 日本久久成人中文字幕电影 | 久久精久久精 | 亚洲自拍偷拍色图 | 亚洲黄色在线播放 | 国内精自线一二区永久 | 五月婷婷激情综合网 | 亚洲va欧美va人人爽春色影视 | 天堂av免费 | 有码中文字幕在线观看 | 亚洲国产精品99久久久久久久久 | 国产第一页在线观看 | 91精品麻豆 | 国产高清绿奴videos | 日日日日 | 免费看wwwwwwwwwww的视频 久久久久久99精品 91中文字幕视频 | 国产视频黄 | 狠狠操.com| 久久96| 日韩精品一区二 | 九九九九色 | 在线成人免费av | 国产自在线观看 | 日韩av成人免费看 | 日韩欧美在线影院 | 久久国产精品99久久久久久丝袜 | 欧美日韩一区二区三区视频 | 久久艹综合| 91九色成人蝌蚪首页 | 最近中文字幕视频网 | 又大又硬又黄又爽视频在线观看 | 亚洲精品美女久久久久网站 | 久久丁香 | 黄色免费网 | 日韩影片在线观看 | 亚洲成人午夜在线 | 日韩精品极品视频 | 亚洲精品久久久久999中文字幕 | 亚洲自拍偷拍色图 | 久在线观看视频 | 超碰在线观看av | 中文字幕首页 | 精品91视频 | 亚洲精品视频免费看 | 亚洲精品在线观看网站 | 久久国产影院 | 超碰免费av | 日韩一区二区三区免费视频 | 久久精品人人做人人综合老师 | 日韩免费电影网站 | 99久久99久久 | 日韩午夜三级 | 成人91视频| 久久66热这里只有精品 | 91高清在线看| 最新av网站在线观看 | 国产亚洲精品久久久久久 | 免费观看的av网站 | 久久免费电影网 | 亚洲天天在线 | 在线视频你懂得 | 国产精品久久久一区二区三区网站 | 国产高清免费观看 | 国产精品久久久久av | 国产做aⅴ在线视频播放 | 国产精品视频大全 | 国产在线超碰 | 深夜免费网站 | 久久国产精品视频观看 | 99久久久国产精品美女 | 四虎成人精品永久免费av九九 | 一区在线免费观看 | 国产精品入口传媒 | 91视频在线观看免费 | 成人av观看 | 久久精选视频 | 国产一区免费视频 | 有码一区二区三区 | 成人av高清在线 | 国产韩国日本高清视频 | 亚洲激精日韩激精欧美精品 | 麻豆国产露脸在线观看 | 国产精品成人免费精品自在线观看 | 欧美成人视 | 国产在线观看一 | 国产少妇在线观看 | 91在线播放视频 | 一区二区欧美日韩 | 四川妇女搡bbbb搡bbbb搡 | 韩国精品在线观看 | 欧美怡红院视频 | 久久久久久久毛片 | 国产成人免费精品 | 在线视频免费观看 | 香蕉久久久久久av成人 | 成人av电影免费在线观看 | 国产精品成人久久 | 五月婷婷在线视频 | 欧美日韩视频 | 久久久久久久久久网 | 91在线入口 | 久久综合狠狠狠色97 | 天天躁天天躁天天躁婷 | 91热视频在线观看 | 色综合激情久久 | 爱av在线网| 国产一区免费 | 天堂网一区二区三区 | 黄色大片日本免费大片 | 在线观看片 | 日本性生活一级片 | 黄色一区二区在线观看 | 在线免费观看视频a | 亚洲国产精品人久久电影 | 天天做日日做天天爽视频免费 | 五月天亚洲激情 | 92精品国产成人观看免费 | 成人av一二三区 | 久久久五月天 | 一级黄色免费网站 | 色a资源在线 | 久久综合九色综合97婷婷女人 | 丁香六月天婷婷 | 一区二区三区四区久久 | 亚洲更新最快 | 亚洲免费高清视频 | 人人射人人澡 | 免费在线观看黄色网 | 亚洲国内精品视频 | 色在线免费观看 | 视频91在线 | 麻豆91网站 | 色视频国产直接看 | 国产精成人品免费观看 | 日韩理论电影网 | 免费男女羞羞的视频网站中文字幕 | 日韩精品免费一线在线观看 | 国内外成人免费在线视频 | 狠狠狠色丁香婷婷综合久久五月 | 国产专区在线看 | 四月婷婷在线观看 | 国产精品mm| 日韩v欧美v日本v亚洲v国产v | 久久视| 在线观看av大片 | 狠狠躁夜夜躁人人爽视频 | 欧美大片mv免费 | 久久永久免费 | 久久99热精品 | 日韩毛片在线一区二区毛片 | 国产精品尤物视频 | 欧美日韩精品在线一区二区 | 五月情婷婷 | 久久99亚洲精品久久 | 免费污片| 亚洲五月婷 | 亚洲精品国产视频 | 欧美精品三级在线观看 | 国产精品福利在线 | 97精品一区| 人人干人人艹 | 免费日韩精品 | 精品国产123 | 国精产品999国精产品视频 | 亚洲天堂网在线视频观看 | 99视频在线观看免费 | 久草视频在线看 | 国产精品一区二区美女视频免费看 | 国产成人精品一区二区 | 四川妇女搡bbbb搡bbbb搡 | 亚洲精品电影在线 | 久久久久久久久久久免费 | 狠狠干天天操 | 丁香六月婷婷 | 人人爱爱人人 | 91久久国产露脸精品国产闺蜜 | 久久国产精品一区二区 | 国产一级片久久 | 人人射网站 | 久久噜噜少妇网站 | 五月婷在线播放 | 国产v在线观看 | 国产精品久久久久av福利动漫 | 免费成人短视频 | 日本久久综合视频 | 色婷婷激情电影 | 91中文字幕网 | 在线91精品| 国产v欧美 | 91在线播| 日本一区二区不卡高清 | 亚洲激情在线观看 | 免费在线一区二区 | 91久色蝌蚪 | 在线看的毛片 | 久久亚洲影视 | 亚洲精品乱码久久久久久蜜桃不爽 | 久久免费福利视频 | 天天干天天操天天做 | 99色精品视频 | 69视频国产 | av电影一区二区三区 | 亚洲春色成人 | 超碰97在线看 | 欧美激情操 | 国产免费午夜 | 激情亚洲综合在线 | 亚洲第五色综合网 | 亚洲成a人片在线观看网站口工 | 亚洲免费小视频 | 久久99国产精品视频 | 亚洲视频分类 | av福利在线 | 日韩综合第一页 | 99热这里只有精品1 av中文字幕日韩 | 99综合电影在线视频 | 99人久久精品视频最新地址 | 欧美一区二区伦理片 | 欧美极品xxx | 四虎在线影视 | 99精品乱码国产在线观看 | 久综合网 | 激情婷婷av | 久久精品站 | 一区二区三区在线观看中文字幕 | 免费看的黄色小视频 | 成人av在线直播 | 国产精品理论视频 | 美女国内精品自产拍在线播放 | 看全黄大色黄大片 | 二区三区在线观看 | 国产精品资源在线 | 国产精品成人免费精品自在线观看 | 麻豆视频免费网站 | 中文字幕日韩一区二区三区不卡 | 国产99久久久精品视频 | 亚洲经典视频在线观看 | 99精品国产一区二区 | 久久亚洲福利视频 | 国产成人一二三 | 人人干97| 日韩有色| 久久高清免费视频 | 中文字幕乱码亚洲精品一区 | 国产五码一区 | 欧美国产日韩一区二区 | 欧美a在线看 | 东方av免费在线观看 | 欧美国产日韩久久 | 国产69精品久久久久久 | 91影视成人 | 国产精品一区二区久久精品 | 国产精品破处视频 | 九九在线高清精品视频 | 成人在线视频免费看 | 婷婷色在线播放 | 蜜桃av久久久亚洲精品 | 午夜久久久久久久久久久 | 91成人看片 | 黄免费在线观看 | 欧洲色综合 | 天天爽天天做 | 日韩欧美一区二区三区视频 | 亚洲免费在线观看视频 | av亚洲产国偷v产偷v自拍小说 | 成人av影视观看 | 欧美成人影音 | 久久精品小视频 | 欧美综合色在线图区 | 欧美一级片在线播放 | 中文在线字幕免 | zzijzzij亚洲日本少妇熟睡 | 亚洲国产精品电影 | 毛片888 | 91麻豆精品国产91久久久使用方法 | 久久综合国产伦精品免费 | 黄色大全在线观看 | 六月丁香激情综合色啪小说 | 亚洲精品一区二区三区新线路 | 黄p网站在线观看 | 亚洲成人国产精品 | 精品免费国产一区二区三区四区 | 中文字幕国产精品一区二区 | 亚洲精品激情 | 超碰97免费 | 91av视频网 | 亚洲一级在线观看 | 天天舔天天搞 | 欧美 亚洲 另类 激情 另类 | 99欧美视频 | 亚州精品一二三区 | 欧美日韩在线视频一区二区 | 国产蜜臀av| 91九色porny蝌蚪主页 | 麻豆精品视频在线 | 91视频 - x99av| 中文字幕人成乱码在线观看 | 黄色片免费看 | 91成人精品一区在线播放69 | 精品久久久久久久久久岛国gif | 日韩激情免费视频 | 亚洲视频axxx | 成人免费影院 | 99精品视频免费 | 国产一级片免费播放 | 亚洲美女免费精品视频在线观看 | 人人干人人干人人干 | 91精品国产高清自在线观看 | 免费观看成人av | 人人狠狠综合久久亚洲婷 | 亚洲视频 视频在线 | 最近中文字幕完整高清 | 973理论片235影院9 | 91精品欧美一区二区三区 | 九九激情视频 | 国产精品福利在线播放 | 欧美另类调教 | 丝袜美女在线观看 | 麻豆视频免费在线 | 99精品网站 | 成人亚洲精品国产www | 美女av电影| 国产永久免费 | 亚洲区另类春色综合小说校园片 | 亚洲乱亚洲乱妇 | 欧美另类xxxx | 国产高清视频免费最新在线 | 天天天天天干 | 2024国产精品视频 | 欧美美女视频在线观看 | 亚洲精品 在线视频 | 美女在线观看网站 | 精品国产成人av在线免 | 97在线超碰 | 一二区电影| 视频在线观看入口黄最新永久免费国产 | 国产v在线播放 | 成年人免费看的视频 | 黄色午夜 | 免费观看一区二区三区视频 | 91九色性视频 | av福利在线导航 | 九九免费精品视频在线观看 | 中文字幕 婷婷 | 狠狠色狠狠色综合日日92 | 免费在线观看一区二区三区 | 亚洲精品国产视频 | 射射射av| 国产亚洲一区二区在线观看 | 国产黄色精品在线 | 国产一区免费在线观看 | 国产精品资源在线观看 | 日韩午夜电影网 | 日韩免费成人 | 九九九九热精品免费视频点播观看 | 福利一区二区三区四区 | 婷婷午夜激情 | 精品美女久久久久 | 日韩av女优视频 | 91资源在线观看 | 亚洲一区网站 | 婷婷色中文网 | 天天亚洲| 中文字幕欧美三区 | www亚洲一区 | 一本色道久久综合亚洲二区三区 | 亚洲综合小说电影qvod | 中文字幕在线观看网站 | 欧美一二三区在线播放 | 四虎永久国产精品 | 亚洲网站在线看 | 欧美日韩国产综合网 | 91视频首页 | 中文字幕乱在线伦视频中文字幕乱码在线 | 99久久久免费视频 | 国产美女久久 | h视频日本 | 国产原创在线 | 99久久精品久久久久久动态片 | 亚洲精品黄色在线观看 | 日韩视频在线观看视频 | 99久久久久成人国产免费 | 久草视频中文在线 | 91天堂素人约啪 | 国产亚洲综合在线 | 97视频免费观看 | 日韩av不卡在线 | 日韩欧美一区二区三区免费观看 | 欧美婷婷色 | 91黄色免费网站 | 黄色的网站在线 | 久久综合九色九九 | 中文在线字幕免费观看 | 亚洲午夜在线视频 | 人人干干人人 | 亚洲精品福利在线观看 | 国产午夜三级一区二区三 | 日韩区在线观看 | 懂色av一区二区在线播放 | 国产 日韩 在线 亚洲 字幕 中文 | 日日夜夜精品免费 | 丁香在线观看完整电影视频 | 色噜噜狠狠狠狠色综合久不 | 天天av在线播放 | 国语对白少妇爽91 | 国产又粗又长又硬免费视频 | 欧美91精品久久久久国产性生爱 | 中文字幕国产一区二区 | 国产资源精品 | 国产精品激情 | 91色国产在线 | 久久亚洲美女 | 2023亚洲精品国偷拍自产在线 | 久久精视频 | 欧美精品久久久久性色 | 国产精品美女视频网站 | 九九热免费在线观看 | 在线观看视频黄色 | 日本黄网站 | 亚洲国产免费 | 成人在线电影观看 | 亚洲精品国产精品国自产观看浪潮 | 青草视频在线看 | 亚洲视频网站在线观看 | 日韩欧美高清在线 | 中文字幕免费播放 | 黄免费在线观看 | 永久黄网站色视频免费观看w | av色综合| 久久夜色精品亚洲噜噜国4 午夜视频在线观看欧美 | 欧美另类交在线观看 | 日韩精品一二三 | 国产婷婷色| 欧美日韩调教 | 99色国产 |