国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

當(dāng)前位置:雨林木風(fēng)下載站 > 技術(shù)開(kāi)發(fā)教程 > 詳細(xì)頁(yè)面

監(jiān)視、控制計(jì)算機(jī)的運(yùn)用

監(jiān)視、控制計(jì)算機(jī)的運(yùn)用

更新時(shí)間:2022-05-06 文章作者:未知 信息來(lái)源:網(wǎng)絡(luò) 閱讀次數(shù):

■ 穆文燁

基于Windows NT/2000 的應(yīng)用系統(tǒng)中,一些關(guān)鍵的人機(jī)交互工作站,常需要了解并記錄所有操作人員操作計(jì)算機(jī)的情況。如: 在工業(yè)控制領(lǐng)域,一些使用計(jì)算機(jī)對(duì)設(shè)備進(jìn)行監(jiān)視和控制的工作站,需要非常高的可靠性和安全性。在這些工作站上通常要求只能運(yùn)行系統(tǒng)所要求的應(yīng)用程序,不能運(yùn)行與系統(tǒng)無(wú)關(guān)的程序,同時(shí)要求對(duì)計(jì)算機(jī)操作人員的所有原始輸入進(jìn)行記錄,以便出現(xiàn)事故(如操作故障、程序異常退出)的時(shí)候,用來(lái)分析是人為原因,還是系統(tǒng)原因造成的。

基于以上需求,我們必須解決兩個(gè)問(wèn)題,一個(gè)是如何記錄操作人員的輸入,另一個(gè)是如何控制操作人員的輸入。在DOS、Windows 3.1、Windows 95/98中都可以編寫(xiě)響應(yīng)鍵盤(pán)和鼠標(biāo)輸入的中斷處理程序,截取來(lái)自鍵盤(pán)和鼠標(biāo)的輸入,記錄、分析后依情況分別處理。但是在Windows NT和 Windows 2000中,這樣的解決方法將不再行得通,這是因?yàn)閃indows NT/2000操作系統(tǒng)為了提高系統(tǒng)的可靠性,不再允許應(yīng)用程序直接對(duì)系統(tǒng)設(shè)備的底層進(jìn)行操作。這樣,用戶(hù)的應(yīng)用程序?qū)⒉荒軌驅(qū)τ?jì)算機(jī)的端口地址進(jìn)行讀寫(xiě)操作,所以在Windows NT/2000操作系統(tǒng)中對(duì)計(jì)算機(jī)端口的讀寫(xiě)是無(wú)效的。另外一種方法能夠非常完美地解決這個(gè)問(wèn)題,就是可以編寫(xiě)操作系統(tǒng)的設(shè)備驅(qū)動(dòng)程序來(lái)解決,但是要編寫(xiě)系統(tǒng)的設(shè)備驅(qū)動(dòng)程序,必須對(duì)Windows NT/2000的系統(tǒng)底層以及整個(gè)系統(tǒng)架構(gòu)有比較深入的了解。而且設(shè)備驅(qū)動(dòng)程序的編寫(xiě)、調(diào)試都比較困難,同時(shí)這方面的資料也比較少。所以本文沒(méi)有采取這種方法,而是采用微軟公布的標(biāo)準(zhǔn)Win32 函數(shù)和鉤子技術(shù)來(lái)解決這個(gè)問(wèn)題,比較方便而且快捷。

在Windows NT/2000 操作系統(tǒng)中,稱(chēng)各種輸入為事件(Event),所有的鍵盤(pán)、鼠標(biāo)輸入事件以及其他事件都是通過(guò)消息傳遞處理機(jī)制來(lái)得到響應(yīng)的。控制、監(jiān)視計(jì)算機(jī)實(shí)際上是控制、監(jiān)視事件消息流。Windows操作系統(tǒng)為這種應(yīng)用提供鉤子(Hook)技術(shù)。這種技術(shù)的要點(diǎn)就是在操作系統(tǒng)的消息傳遞處理機(jī)制上外掛一個(gè)我們定義的函數(shù),可以使用這個(gè)函數(shù)來(lái)監(jiān)視、控制系統(tǒng)的事件消息流。本文采用的就是這種方法,這種方法要求將所有的程序代碼放入系統(tǒng)可以加載的動(dòng)態(tài)鏈接庫(kù)中。下面我們以鍵盤(pán)輸入的監(jiān)視和控制為例詳細(xì)敘述這種方法。其總體思路如下:

首先,定義自己的鉤子函數(shù)。

其次,安裝自定義的鉤子函數(shù),此后鉤子函數(shù)在后臺(tái)開(kāi)始工作。一旦系統(tǒng)發(fā)現(xiàn)擊鍵動(dòng)作或者鼠標(biāo)動(dòng)作,系統(tǒng)將馬上調(diào)用該自定義的鉤子函數(shù),并將事件消息傳入,供程序分析判斷。它可以監(jiān)視所有的擊鍵和鼠標(biāo)動(dòng)作,與DOS 時(shí)代的中斷調(diào)用有非常相似的地方。

最后,卸載自定義的鉤子函數(shù)。

鉤子函數(shù) 的定義

微軟的鉤子技術(shù)的原理就是應(yīng)用程序可以在系統(tǒng)的消息處理機(jī)制上外掛一個(gè)子程序,在消息尚未到達(dá)目的地之前,用該子程序來(lái)截獲此消息,以進(jìn)行監(jiān)視和控制。我們這里使用的是WH_KEYBOARD_LL類(lèi)型的鉤子函數(shù),這種類(lèi)型的鉤子函數(shù)可以截獲所有的鍵盤(pán)事件,即敲擊鍵盤(pán)上的任何一個(gè)鍵,我們自定義的鉤子函數(shù)都可以知道。該類(lèi)型鉤子函數(shù)要求安裝自定義的鉤子函數(shù)必須是以下原型:

LRESULT CALLBACK LowLevelKeyboard-

Proc(

int nCode,

WPARAM wParam,

LPARAM lParam

);

其中各參數(shù)的含義如下:

int nCode: 用來(lái)決定鉤子函數(shù)如何處理事件消息的代碼,參數(shù)的取值為HC_ACTION時(shí),參數(shù)wParam、lParam包含了所需的鍵盤(pán)消息事件信息。

WPARAM wParam: 鍵盤(pán)消息事件的類(lèi)型ID。該參數(shù)有四種可能的消息類(lèi)型取值:WM_KEY-

DOWN,WM_KEYUP,WM_SYSKEYDOWN, WM_SYSKEYUP.

LPARAM lParam: 指向一個(gè)類(lèi)型為KBDLLHOOKSTRUCT的結(jié)構(gòu)指針。該結(jié)構(gòu)容納了底層鍵盤(pán)輸入事件的詳細(xì)信息,它的定義如下:

typedef struct tagKBDLLHOOKSTRUCT {

DWORD vkCode;

//一個(gè)范圍從1到254的虛擬鍵碼

DWORD scanCode;

// 鍵盤(pán)的硬件掃描碼

DWORD flags;

// 一系列的標(biāo)志位

//0比特位指示該鍵是不是擴(kuò)展鍵(如: 功能鍵,或數(shù)字小鍵盤(pán)上的鍵),1表示是,0表示否

//1~3比特位保留

//4比特位用來(lái)區(qū)分該事件是否來(lái)自Win32 函數(shù)keybd_event()調(diào)用,1表示是,0表示否

//5比特位為狀態(tài)描述碼,如果ALT鍵按下,該位是1,否則是0。

//6比特位保留。

//7比特位是變換狀態(tài)位,鍵被按下為0,鍵被釋放為1。

DWORD time;

// 該消息事件的時(shí)間標(biāo)記。

DWORD dwExtraInfo;

// 該消息的其他擴(kuò)展信息。

}KBDLLHOOKSTRUCT, FAR *LPKBDLLHOOK

STRUCT, *PKBDLLHOOKSTRUCT;

實(shí)際的鉤子函數(shù)的框架如下:

LRESULT CALLBACK MyLowLevelKeyboard

Proc(int nCode,WPARAM wParam,LPARAM lParam)

{

BOOL bSkipThisEvent = FALSE;

HWND hwndForeground;

HWND hwndFocus;

DWORD dwCurrentThreadId;

DWORD dwWindowThreadId;

if (nCode == HC_ACTION) {

PKBDLLHOOKSTRUCT p = (PKBDLLHOOKSTRUCT) lParam;

//系統(tǒng)傳遞來(lái)的鍵盤(pán)輸入事件信息指針

switch (wParam) {

case WM_SYSKEYUP:

case WM_KEYUP: //if key up

/*這段代碼用來(lái)獲得當(dāng)前擁有輸入焦點(diǎn)的窗口的窗口句柄,以便獲得該窗口的相關(guān)信息*/

/*獲得前端窗口(即用戶(hù)當(dāng)前正在工作的窗口)的句柄,創(chuàng)建該窗口的線(xiàn)程通常擁有比其他線(xiàn)程稍微高一些的優(yōu)先級(jí)。*/

hwndForegroud=::GetForegroundWindow(); dwCurrentThreadId=::GetCurrentThreadId(); //當(dāng)前線(xiàn)程的Id

//獲得產(chǎn)生前端窗口hwndForeground的線(xiàn)程Id值,用來(lái)惟一表示一個(gè)線(xiàn)程

dwWindowThreadId=::GetWindowThread-

ProcessId(hwndForegroud,NULL);

/*下面這一行代碼非常重要,它的作用是使當(dāng)前線(xiàn)程(dwCurrentThreadId)的輸入處理機(jī)制依附到創(chuàng)建前端窗口的線(xiàn)程(dwWindowThreadId)的輸入機(jī)制上,否則你將得不到當(dāng)前擁有鍵盤(pán)輸入焦點(diǎn)的窗口句柄。這是因?yàn)樵赪indows NT/2000操作系統(tǒng)通常創(chuàng)建不同的線(xiàn)程來(lái)處理相互獨(dú)立的輸入過(guò)程,每一個(gè)輸入過(guò)程都擁有自己的輸入狀態(tài)(焦點(diǎn)、鍵盤(pán)狀態(tài)、隊(duì)列狀態(tài)等),通過(guò)AttachThreadInput調(diào)用,操作系統(tǒng)將允許調(diào)用線(xiàn)程獲得或者設(shè)置其他線(xiàn)程生成窗口的輸入狀態(tài)信息。只有執(zhí)行該系統(tǒng)調(diào)用,才能夠得到當(dāng)前擁有鍵盤(pán)輸入焦點(diǎn)的窗口的窗口句柄,否則GetFocus()系統(tǒng)調(diào)用將返回NULL。在這一點(diǎn)上Windows NT/2000與Windows 9X操作系統(tǒng)有很大不同,這也正是Windows NT/2000比Windows 95/98 操作系統(tǒng)可靠性、安全性更好的一個(gè)原因*/

AttachThreadInput(dwCurrentThreadId , dwWindowThreadId,TRUE); //

//獲得擁有鍵盤(pán)輸入焦點(diǎn)的窗口的窗口句柄

hwndFocus =::GetFocus();

if(hwndFocus || hwndForeground)

{

char wnm[256];

wnm[0]=0;

//變量定義后,使用之前一定要初始化。

//獲得該窗口的窗口標(biāo)題,就是在窗口標(biāo)題欄上顯示的內(nèi)容

:: GetWindowText(hwndForeground,wnm,255);

char clsnm[266];

clsnm[0]=0;

//獲得該窗口的類(lèi)名字

:: GetClassName(hwndFocus,clsnm,255);

//獲得該窗口的風(fēng)格

LONG style=::GetWindowLong(hwfocus,GWL_STYLE);

/*如果你只對(duì)部分窗口感興趣的話(huà),可以通過(guò)下面的形式進(jìn)行過(guò)濾, 從而只處理你所感興趣的某些窗口的輸入事件*/

if((stricmp(clsnm,“edit”)==0 )

|| (0x0020 &style)

|| strstr(wnm,“MyTest Wnd”))

{//你可以在此記錄供以后分析使用的相關(guān)信息

LLKEY_OutputToLog(hwfore,hwfocus,wnm,clsnm,p);

}

}

case WM_KEYDOWN:

case WM_SYSKEYDOWN:

if (p->vkCode == VK_LWIN)

/*該行代碼用來(lái)將鍵盤(pán)上的左Win系統(tǒng)鍵(就是帶有微軟旗幟圖案的那個(gè)鍵,注意是左邊的那個(gè))屏蔽掉,如果在代碼執(zhí)行后,用戶(hù)敲擊鍵盤(pán)上的左Win系統(tǒng)鍵,將不會(huì)彈出Windows的開(kāi)始菜單。你可以根據(jù)你的需要屏蔽任何你所要屏蔽的鍵,從而達(dá)到控制計(jì)算機(jī)使用的目的。*/

bSkipThisEvent = TRUE;

break;

}end of switch

}//end of if

if(bSkipThisEvent)//如果是需要屏蔽的鍵,一定要返回1給操作系統(tǒng),切記。

return 1;

else

return CallNextHookEx(NULL,nCode,wParam,lParam);

/*調(diào)用鉤子函數(shù)鏈,以便使其他應(yīng)用程序能夠正常工作*/

}

這里需要注意的是,如果nCode 小于零,鉤子函數(shù)必須返回CallNextHookEx函數(shù)調(diào)用的返回值。如果nCode>=0,建議仍然返回CallNextHookEx函數(shù)調(diào)用的返回值,否則其他安裝了WH_KEYBOARD_LL鉤子函數(shù)的應(yīng)用程序?qū)⑹詹坏较到y(tǒng)發(fā)送的鉤子通知,從而使其他應(yīng)用程序功能發(fā)生異常。不過(guò)我們也可以利用系統(tǒng)的這一個(gè)特點(diǎn),來(lái)屏蔽一些功能鍵,禁止某些系統(tǒng)特性,實(shí)現(xiàn)控制計(jì)算機(jī)使用的想法。

安裝 鉤子函數(shù)

接下來(lái)的工作就是將我們定義好的鉤子函數(shù)安裝到系統(tǒng)中。用來(lái)安裝用戶(hù)自定義鉤子函數(shù)的Win32函數(shù)是SetWindowsHookEx,該函數(shù)的原型如下:

HHOOK SetWindowsHookEx(

int idHook,

//將要安裝的鉤子函數(shù)的鉤子類(lèi)型

HOOKPROC lpfn,

//我們自定義的鉤子函數(shù)的函數(shù)地址

HINSTANCE hMod,

//應(yīng)用程序的實(shí)例句柄,即容納了鉤子函數(shù)的動(dòng)態(tài)鏈接庫(kù)的句柄。如果鉤子函數(shù)所在地址空間在當(dāng)前進(jìn)程的地址空間,hMod 應(yīng)該為NULL.

DWORD dwThreadId

//鉤子起作用的線(xiàn)程Id,如果該值為零,則對(duì)系統(tǒng)中所有線(xiàn)程都起作用

);

其中idHook指定了安裝的鉤子函數(shù)的類(lèi)型,不同類(lèi)型的鉤子函數(shù)可完成不同應(yīng)用功能,而且不同版本的Windows操作系統(tǒng)支持的鉤子函數(shù)的種類(lèi)也不盡相同,在本文我們主要介紹的是Windows NT/2000操作系統(tǒng)中目前公開(kāi)支持的最底層的兩種鉤子類(lèi)型:WH_KEYBOARD_LL和WH_MOUSE_LL。這兩種類(lèi)型的鉤子函數(shù)在Windows NT Services Pack 3及其以后的版本,包括Windows 2000 Professional中得到很好的支持。這兩種類(lèi)型的鉤子函數(shù)可以分別監(jiān)視底層的鍵盤(pán)和鼠標(biāo)輸入事件,在系統(tǒng)將事件分發(fā)到相應(yīng)的接收目的地之前將它截獲,交給用戶(hù)自定義的鉤子函數(shù)來(lái)處理。下面以鍵盤(pán)鉤子為例詳細(xì)說(shuō)明,鼠標(biāo)鉤子與此類(lèi)似,不再贅談。

在這里,我們的安裝函數(shù)和我們定義的鉤子函數(shù)放在同一個(gè)動(dòng)態(tài)鏈接庫(kù)中。其中g(shù)_hWin32NT_

DllHandle是我們定義的全局變量,類(lèi)型是Handle,在系統(tǒng)調(diào)用動(dòng)態(tài)鏈接庫(kù)的入口函數(shù)時(shí),將hModule的值賦給g_hWin32NT_DllHandle。

//下面是動(dòng)態(tài)鏈接庫(kù)的入口函數(shù)

DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved )

{

g_hWin32NT_DllHandle = hModule;

/*保存該值,以后在安裝自定義鉤子函數(shù)的時(shí)候要使用該值*/

return TRUE;

}

//下面的函數(shù)用來(lái)安裝我們自定義的鉤子函數(shù)

HHOOK g_hhkLowLevelKybd ;

//以后在卸載自定義鉤子函數(shù)時(shí),要用到該值

void StartMyHook(void)

{

g_hhkLowLevelKybd = SetWindowsHook

Ex(WH_KEYBOARD_LL,

::MyLowLevelKeyboardProc, (HINSTANCE)g_hWin32NT_DllHandle, 0);

}

/*g_hWin32NT_DllHandle是動(dòng)態(tài)鏈接庫(kù)的句柄,我們定義的鉤子函數(shù)放在該動(dòng)態(tài)鏈接庫(kù)中。該句柄是在操作系統(tǒng)加載動(dòng)態(tài)鏈接庫(kù)時(shí),由操作系統(tǒng)調(diào)用DllMain()傳入的*/

如果安裝成功,系統(tǒng)調(diào)用將返回一個(gè)鉤子函數(shù)的句柄;如果失敗,將返回NULL。將來(lái)在卸載我們自定義的鉤子函數(shù)時(shí)要使用該句柄。所以必須將返回值保存到一個(gè)全局變量中。安裝成功后,該函數(shù)返回。從現(xiàn)在開(kāi)始,鍵盤(pán)的任何擊鍵動(dòng)作都將被我們定義的鉤子函數(shù)捕捉到,包括各種系統(tǒng)功能鍵。操作系統(tǒng)在后臺(tái)將自動(dòng)異步地調(diào)用我們自定義的鉤子函數(shù)進(jìn)行處理,并且不會(huì)影響任何當(dāng)前正在進(jìn)行的各種工作,也不會(huì)對(duì)系統(tǒng)有任何不良影響。

卸載 鉤子函數(shù)

當(dāng)我們的應(yīng)用程序退出時(shí),或者不再需要鉤子函數(shù)的處理時(shí),必須卸載我們自定義的鉤子函數(shù)。

//下面的Win32函數(shù)用來(lái)卸載我們自定義的鉤子函數(shù)

UnhookWindowsHookEx(g_hhkLowLevel

Kybd);

至此,我們已經(jīng)比較完整地介紹了底層鍵盤(pán)鉤子技術(shù)的應(yīng)用方法,對(duì)于鼠標(biāo)輸入事件的控制與監(jiān)視的方法,與此完全類(lèi)似,讀者可依照本文完成自己的功能。并且在你的應(yīng)用程序中,可以根據(jù)需要,多次安裝、卸載鉤子函數(shù)。 不過(guò)有一點(diǎn)讀者要注意,就是在程序調(diào)試時(shí),一定不要同時(shí)將這兩種類(lèi)型的鉤子函數(shù)都進(jìn)行設(shè)置,因?yàn)橐坏┏绦蛱幚砩嫌绣e(cuò)誤,操作系統(tǒng)將不能獲得任何操作消息,計(jì)算機(jī)只有重新啟動(dòng)。讀者可以將本文介紹的方法應(yīng)用到許多場(chǎng)合,比如在運(yùn)行某些關(guān)鍵的任務(wù)時(shí),為避免人機(jī)交互的干擾,可以鎖定鍵盤(pán)和鼠標(biāo)的輸入。待任務(wù)完成時(shí),再恢復(fù)正常的鍵盤(pán)和鼠標(biāo)的輸入。另外,屏蔽某些不想讓用戶(hù)使用的功能鍵等等。 

溫馨提示:喜歡本站的話(huà),請(qǐng)收藏一下本站!

本類(lèi)教程下載

系統(tǒng)下載排行

国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

  • <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        aaa亚洲精品| 久久久无码精品亚洲日韩按摩| 九九精品一区二区| 91网上在线视频| 国产日韩欧美a| 26uuu成人网一区二区三区| 亚洲成人一区二区在线观看| 91在线播放网址| 国产午夜精品理论片a级大结局| 免费欧美在线视频| 欧美精品一卡两卡| 精品在线免费视频| 国产精品午夜免费| 91福利区一区二区三区| 婷婷久久综合九色综合绿巨人| 日韩亚洲欧美中文三级| 国产乱子伦视频一区二区三区| 久久精子c满五个校花| 波多野结衣91| 天使萌一区二区三区免费观看| 欧美一级二级三级蜜桃| 成人在线视频首页| 日韩激情视频在线观看| 亚洲国产高清在线| 欧美一区二区成人| 91美女精品福利| 久久草av在线| 亚洲一区二区三区在线播放| 2欧美一区二区三区在线观看视频| av电影在线观看完整版一区二区| 五月天激情小说综合| 中文av一区特黄| 欧美电视剧免费观看| 色天天综合久久久久综合片| 国产美女精品一区二区三区| 亚洲成人精品在线观看| 亚洲欧洲精品一区二区三区 | 欧美欧美欧美欧美首页| 国产毛片精品国产一区二区三区| 亚洲精品日韩专区silk| 久久午夜国产精品| 欧美一级一区二区| 欧美性猛交xxxx黑人交| 不卡视频在线看| 麻豆一区二区在线| 日韩精品成人一区二区三区| 一区二区在线免费| 国产精品女主播在线观看| 欧美一区二视频| 欧美亚一区二区| av在线一区二区| 国产精品中文字幕一区二区三区| 美日韩一级片在线观看| 视频一区国产视频| 亚洲五码中文字幕| 亚洲制服丝袜在线| 艳妇臀荡乳欲伦亚洲一区| 亚洲日本在线视频观看| 亚洲婷婷在线视频| 自拍偷在线精品自拍偷无码专区 | 丁香六月综合激情| 国产麻豆视频一区二区| 国产综合久久久久久鬼色| 蜜桃视频一区二区三区在线观看| 日日夜夜一区二区| 日本特黄久久久高潮| 亚洲成精国产精品女| 亚洲高清免费视频| 亚洲无人区一区| 亚洲自拍偷拍综合| 午夜精品福利视频网站| 日韩av网站免费在线| 青青草国产成人av片免费| 裸体一区二区三区| 国产麻豆午夜三级精品| 成人午夜视频网站| bt7086福利一区国产| 日本乱人伦aⅴ精品| 欧美精选一区二区| 精品日产卡一卡二卡麻豆| 日韩欧美国产一区二区在线播放 | 一本到三区不卡视频| 免费精品视频最新在线| 国产在线看一区| 99久久免费国产| 欧美视频一区二区三区在线观看| 7777精品伊人久久久大香线蕉 | 午夜av一区二区| 免费看欧美美女黄的网站| 国产一区二区导航在线播放| 处破女av一区二区| 欧美性三三影院| 国产亚洲成av人在线观看导航| 国产欧美日韩另类视频免费观看| 亚洲日本免费电影| 紧缚奴在线一区二区三区| 成人av网站免费观看| 欧美日韩一区二区三区高清| 精品久久人人做人人爱| 亚洲色图欧美偷拍| 久久av中文字幕片| 色琪琪一区二区三区亚洲区| 精品国产欧美一区二区| 亚洲欧美一区二区不卡| 日本怡春院一区二区| 成人一二三区视频| 日韩你懂的在线观看| 首页国产欧美日韩丝袜| 9i在线看片成人免费| 欧美精品一区二区三区蜜桃视频 | 18涩涩午夜精品.www| 蜜臀精品久久久久久蜜臀| www.欧美日韩| 久久综合资源网| 亚洲成av人片一区二区梦乃| 成人免费电影视频| 欧美不卡在线视频| 毛片av一区二区| 在线不卡一区二区| 亚洲在线视频网站| 国产在线播放一区二区三区| 精品视频色一区| 亚洲色图在线播放| 福利一区二区在线观看| 91麻豆精品国产91久久久使用方法| 日韩一区在线免费观看| 国产成人8x视频一区二区| 日韩精品资源二区在线| 轻轻草成人在线| 欧美日韩免费观看一区三区| 亚洲一区二区三区爽爽爽爽爽| 成人av免费观看| 国产精品免费观看视频| 国产激情偷乱视频一区二区三区| 欧美男生操女生| 亚洲国产精品一区二区久久 | 亚洲色图欧洲色图| aa级大片欧美| 亚洲欧美日韩中文字幕一区二区三区 | 制服丝袜亚洲精品中文字幕| 亚洲天堂精品视频| 成人动漫av在线| 国产精品国产三级国产| 成人在线综合网| 国产精品视频免费| 91麻豆福利精品推荐| 亚洲少妇屁股交4| 91蜜桃网址入口| 亚洲国产日韩精品| 91麻豆精品国产91| 色婷婷av久久久久久久| 五月天亚洲精品| 欧美精品一区二区高清在线观看 | 97久久精品人人做人人爽| 中文字幕在线观看一区| 国产91丝袜在线播放九色| 国产女人aaa级久久久级| 播五月开心婷婷综合| 亚洲精品写真福利| 欧美精品丝袜久久久中文字幕| 美国三级日本三级久久99| 久久新电视剧免费观看| 成人激情免费视频| 亚洲欧美日韩久久精品| 欧美日韩视频专区在线播放| 精品一区二区三区在线观看| 中文字幕欧美三区| 欧美天天综合网| 日韩电影一区二区三区| 久久精品夜色噜噜亚洲a∨| 欧美在线播放高清精品| 青草国产精品久久久久久| 精品国产三级a在线观看| 91影院在线免费观看| 日日骚欧美日韩| 久久亚洲捆绑美女| 在线看国产一区二区| 国产一区二区在线影院| 亚洲免费电影在线| 亚洲精品一区二区三区四区高清| 不卡的电视剧免费网站有什么| 亚洲激情av在线| 久久久久久久av麻豆果冻| 日本黄色一区二区| 国产精品18久久久久久vr| 亚洲尤物在线视频观看| 久久品道一品道久久精品| 色噜噜偷拍精品综合在线| 国产91精品免费| 日韩成人精品视频| 亚洲女人的天堂| 国产三区在线成人av| 欧美一区二区免费视频| 在线观看视频91| 99久久精品免费看国产| 久久激情综合网| 一区二区三区高清| 亚洲嫩草精品久久| 国产精品超碰97尤物18| 久久久久九九视频|