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

當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

如何Delphi中操縱撥號網絡

如何Delphi中操縱撥號網絡

更新時間:2019-07-04 文章作者:未知 信息來源:網絡 閱讀次數:

用MODEM撥號上網,仍是大多數個人網民選擇上網的方式.如果能在我們的應用程序中管理撥號 網絡(如Foxmail、Sygate中的撥號功能),無疑將會方便我們的軟件用戶(不用再切換應用程序, 運行撥號網絡),提高我們的軟件的友好性從而提高軟件的競爭力.


在WIN9X下,如果安裝了撥號網絡,則在WINDOWS系統的系統目錄System下將有兩個撥號網絡管理 程序庫RasApi32.DLL和RasApi16.DLL,我們可利用其中的函數來獲取和設置撥號連接網絡的信息。在 Delphi幫助文件中,有相關函數的說明。


在此,我們要討論的管理項目有:

1、獲取當前系統中可用的撥號連接名稱

2、新建撥號連接、修改撥號連接的屬性

3、獲取和設置撥號連接的撥號參數

4、用指定的撥號連接撥號、掛斷指定的撥號連接

5、獲取當前活動的連接及其連接狀態零、獲取RasAPI函數執行失敗的錯誤信息


RasAPI的調用接口是統一的,但對于不同的Windows版本,許多常量和數據結構的定義是不同的。 如果使用的數據結構與Windows版本不對應,RasAPI函數執行會失敗;另外,其它原因如其它程序也 在使用同一個撥號連接進行撥號等,也會造成RasAPI函數執行失敗.鑒于此原因,我們需要先討論獲 取RasAPI函數執行失敗的錯誤信息的函數。

當一個RasAPI函數執行結束時,會返回一個結果標識,為0時表示執行成功,否則作為一個錯誤標 識符表示執行失敗的原因。RasAPI函數RasGetErrorString可以根據錯誤標識符返回其錯誤描述信息,

在中文WIN9X下可提供一個中文錯誤信息.

RasGetErrorString的函數原型為:

function RasGetErrorString (

uErrorValue : UINT;//錯誤標識符

lpszErrorString : PChar;//錯誤提示信息的緩沖區

cBufSize : DWORD//錯誤提示信息的緩沖區大小

) : DWORD; stdcall;

function RasGetErrorString;external RasApiDll name 'RasGetErrorStringA';

( 注:RasApiDll = 'Rasapi32.dll'; )


為了方便,我們可以自己編寫一個函數,用于獲取RasAPI函數執行失敗的錯誤信息。在下面的例

子中,會經常用到該函數。函數代碼如下所示:

{ 根據錯誤標識符,獲取RasAPI函數執行失敗的錯誤信息 }

function GetRasError( ErrorID : UINT ) : string;

var

buffer : array[ 0..255 ] of char;

begin

if 0 = RasGetErrorString( ErrorID

buffer

256 ) then

result := strpas( buffer )//如果能正確返回錯誤信息,則轉化為Pascal字符串

else//否則返回16進制形式的錯誤代碼

result := 'GetRasError Failure:ErrorID=' + Format( '%x'

[ErrorID] );

end;


一、獲取當前系統中可用的撥號連接名稱

即獲取系統中已建立的撥號連接的名稱,可用來讓用戶選擇使用哪個撥號連接進行撥號.

可以用兩種方法來實現.一種是利用RasAPI函數;另一種是不用RasAPI函數,直接在注冊表中查詢.


1、不用RasAPI函數,直接在注冊表中查詢

在注冊表的HKEY_USERS\.Default\RemoteAccess\Addresses下,列出了已經在撥號網絡中建立的撥號連接的名稱及其屬性設置,其中各項目的名稱即為可用的撥號連接的名稱;各項目的值即為各撥號連接的屬性設置,不過是二進制串,筆者還看不懂.由此可見,我們只要讀出各項目的名稱即可獲取當前系統中可用的撥號連接名稱.

var

registryTemp : TRegistry;

stringsTemp : TStringlist;

begin

registryTemp := TRegistry.Create;

stringsTemp := TStringlist.Create;

with registryTemp do

begin

RootKey := HKEY_USERS;//根鍵設置為HKEY_USERS

//如果存在子鍵.Default\RemoteAccess\Addresses

if OpenKey('.Default\RemoteAccess\Addresses'

false) then

GetValueNames( stringsTemp );//讀出各項目的名稱,即撥號連接名稱

end;

combobox1.Items.assign( stringsTemp );//顯示,供選擇

end;


2、用RasAPI函數

RasAPI函數RasEnumEntries可獲取當前系統中可用的撥號連接名稱.其函數原型為

function RasEnumEntries(reserved : PChar;//保留字段

必須為NIL

lpszPhonebook : PChar;//電話本名稱

在Win9X下無作用

可為空字符串

lprasentryname : LPRASENTRYNAME;//接收撥號連接名稱的緩沖區

是一個RASENTRYNAME類型數組的指針

var lpcb : DWORD;//接收撥號連接名稱的緩沖區的大小(Bytes)

var lpcEntries: DWORD//實際獲得的撥號連接名稱的數目

) : DWORD; stdcall;

function RasEnumEntries;external RasApiDll name 'RasEnumEntriesA';


參數lprasentryname提供了一個RASENTRYNAME類型數組的指針,指向一個接收撥號連接名稱的緩沖區,其中RASENTRYNAME及LPRASENTRYNAME的類型說明如下:


LPRASENTRYNAME = ^RASENTRYNAME;

RASENTRYNAME = record

dwSize : DWORD;//該結構所占內存的大小(Bytes)

一般設置為SizeOf(RASENTRYNAME)

szEntryName : array [ 0..RAS_MaxEntryName ] of char;//撥號連接名稱

end;

lpcb為緩沖區的大小,一般設置為dwSize的倍數,倍數為可能有的連接的個數.

lpcEntries實際的連接的個數.


下面是一個應用例子,列出了當前系統中可用的撥號連接名稱.

注意,應在RASENTRYNAME緩沖區的第一個RASENTRYNAME結構中設置dwSize.

const MaxPhoneEntries = 10;//最多的撥號連接數目

var intIndex : integer;

PhoneEntries : array[ 0..MaxPhoneEntries - 1 ] of RASEntryName;

dwSize

dwEntries

dwResult : DWORD;

begin

//在RASENTRYNAME緩沖區的第一個RASENTRYNAME結構中設置dwSize

PhoneEntries[ 0 ].dwSize := sizeof( RASEntryName );


dwSize := MaxPhoneEntries * sizeof( RASEntryName );//為緩沖區的大小

//調用RasAPI函數,獲取當前系統中可用的撥號連接名稱

dwResult := RasEnumEntries ( NIL

''

@PhoneEntries[ 0 ]

dwSize

dwEntries );


if dwResult <> 0 then

begin//RasAPI函數,執行錯誤

memo1.lines.add('RasEnumEntries錯誤:' + GetRasError( dwResult ));

exit;

end;


//顯示當前系統中可用的撥號連接名稱

memo1.lines.add('共有' + inttostr( dwEntries ) + '個RAS連接,如下所示');

for intIndex := 0 to dwEntries -1 do

memo1.lines.add( strpas( PhoneEntries[ intIndex ].szEntryName ) );

end;


3、獲取默認的撥號連接的名稱

默認的撥號連接,即用戶在瀏覽器中設置的撥號連接,該連接可以認為是用戶最常用撥號連接.

在注冊表的HKEY_USERS\.Default\RemoteAccess位置,有一個字符串名Profile,它對應字符值即為HKEY_USERS\.Default\RemoteAccess\Addresses.


二、新建撥號連接、修改撥號連接的屬性

RasAPI函數RasCreatePhonebookEntry、RasEditPhonebookEntry通過調用Win9X的

新建撥號連接、修改撥號連接的設置界面,允許用戶新建撥號連接、修改撥號連接,具體的設置操作還要由系統來完成.

1、新建撥號連接

新建撥號連接的RasAPI函數為RasCreatePhonebookEntry,其函數原型為:

function RasCreatePhonebookEntry(

hwnd : THandle; //新建撥號連接窗口的父窗口的句柄,為NIL表示桌面(DeskTop)

lpszPhonebook: pchar//電話本名稱

在Win9X下無作用

可為空字符串

) : DWORD;stdcall;

function RasCreatePhonebookEntry;external RasApiDll name 'RasCreatePhonebookEntryA';


函數返回值為0表示執行成功;否則為錯誤代碼.


下面是一個應用例子,允許用戶新建一個撥號連接.

var

dwResult : DWORD;

begin

//在當前窗口中新建撥號連接

dwResult := RasCreatePhonebookEntry( handle

'' );

if dwResult = 0 then

memo1.lines.add('新建撥號連接成功!')

else

memo1.lines.add('新建撥號連接失敗:!' + GetRasError( dwResult ))

end;


2、修改撥號連接的屬性

修改撥號連接的屬性的RasAPI函數為RasEditPhonebookEntry,其函數原型為:

function RasEditPhonebookEntry(

hwnd : THandle; //新建撥號連接窗口的父窗口的句柄,為NIL表示桌面(DeskTop)

lpszPhonebook: pchar;//電話本名稱,在Win9X下無作用

可為空字符串

lpszEntryName: pchar//撥號連接的名稱,如'163'、'169'等

) : DWORD; stdcall;

function RasEditPhonebookEntry;external RasApiDll name 'RasEditPhonebookEntryA';


函數返回值為0表示執行成功;否則為錯誤代碼.

下面是一個應用例子,允許用戶修改指定撥號連接的屬性.

var

dwResult : DWORD;

begin

//在當前窗口中修改撥號連接的屬性

dwResult := RasEditPhonebookEntry( handle

''

'163' );

if dwResult = 0 then

memo1.lines.add('修改撥號連接成功!')

else

memo1.lines.add('修改撥號連接失敗:!' + GetRasError( dwResult ))

end;


三、獲取和設置撥號連接的撥號參數

用RasAPI函數RasGetEntryDialParams、RasSetEntryDialParams可以直接獲取和設置指定撥號連接的撥號參數,其中包括用戶名稱和用戶密碼!

1、獲取撥號連接的撥號參數

獲取撥號連接的撥號參數RasAPI函數為RasGetEntryDialParams,其函數原型為:

function RasGetEntryDialParams(

lpszPhonebook: pchar;//電話本名稱,在Win9X下無作用

可為空字符串

pRASDIALPARAMS:LPRASDIALPARAMS;//撥號參數,是一個RASDIALPARAMS類型的指針

var lpfPassword : WordBool//是否需要用戶密碼

) : DWORD; stdcall;

function RasGetEntryDialParams;external RasApiDll name 'RasGetEntryDialParamsA';


參數pRASDIALPARAMS是一個RASDIALPARAMS類型的指針,指向一個撥號連接的撥號參數數據 的緩沖區,其中RASDIALPARAMS及LPRASDIALPARAMS的類型說明如下:

LPRASDIALPARAMS = ^RASDIALPARAMS;

RASDIALPARAMS = record

dwSize : DWORD;//該結構所占內存的大小(Bytes)

一般設置為SizeOf(RASDIALPARAMS)

szEntryName : array[0..RAS_MaxEntryName] of char;//撥號連接名稱

szPhoneNumber : array[0..RAS_MaxPhoneNumber] of char;//撥號號碼

szCallbackNumber : array[0..RAS_MaxCallbackNumber] of char;//回叫號碼

szUserName : array[0..UNLEN] of char;//用戶名稱

szPassword : array[0..PWLEN] of char;//用戶密碼

szDomain : array[0..DNLEN] of char;//域名

end;

函數返回值為0表示執行成功;否則為錯誤代碼.

下面是一個應用例子,獲取指定撥號連接的撥號參數.

var

dwResult : DWORD;

RASDIALPARAMSData : RASDIALPARAMS;

NeedPWD : WordBool;

begin

//指定撥號連接的名稱

with RASDIALPARAMSData do

begin

dwSize := sizeof( RASDIALPARAMS );//結構大小

szEntryName := '163';//指定撥號連接的名稱

szUserName := '';//其它五個參數初始化

szPassword := '';

szDomain := '';

szCallbackNumber := '';

szPhoneNumber := '';

end;

NeedPWD := true;//需要用戶密碼


//獲取指定撥號連接的撥號參數

dwResult := RasGetEntryDialParams( ''

@RASDIALPARAMSData

NeedPWD );


if dwResult <> 0 then //獲取指定撥號連接的撥號參數失敗

memo1.lines.add( '獲取'+StrPAS(RASDIALPARAMSData.szEntryName )+'撥號參數失敗:'

+ GetRasError( dwResult ))

else

begin//顯示指定撥號連接的撥號參數

memo1.lines.add( StrPAS(RASDIALPARAMSData.szEntryName )+'撥號參數如下');

memo1.lines.add( '用戶名稱:' + StrPAS(RASDIALPARAMSData.szUserName ));

memo1.lines.add( '用戶密碼:' + StrPAS(RASDIALPARAMSData.szPassword ));

memo1.lines.add( '域 名:' + StrPAS(RASDIALPARAMSData.szDomain ));

memo1.lines.add( '回叫號碼:' + StrPAS(RASDIALPARAMSData.szCallbackNumber ));

memo1.lines.add( '撥號號碼:' + StrPAS(RASDIALPARAMSData.szPhoneNumber ));

end;

end;

2、設置撥號連接的撥號參數

設置撥號連接的撥號參數RasAPI函數為RasSetEntryDialParams,其函數原型為:

function RasSetEntryDialParams(

lpszPhonebook: pchar;//電話本名稱,在Win9X下無作用

可為空字符串

pRASDIALPARAMS:LPRASDIALPARAMS;//撥號參數,是一個RASDIALPARAMS類型的指針

var lpfPassword : WordBool//是否刪除用戶密碼

) : DWORD; stdcall;

function RasSetEntryDialParams;external RasApiDll name 'RasSetEntryDialParamsA';

參數pRASDIALPARAMS的說明同RasGetEntryDialParams.

參數lpfPassword的含義與RasGetEntryDialParams不同,在此表示是否刪除用戶密碼,為

TRUE時將原來的用戶密碼刪除.


函數返回值為0表示執行成功;否則為錯誤代碼.

下面是一個應用例子,設置指定撥號連接的撥號參數.

var

dwResult : DWORD;

RASDIALPARAMSData : RASDIALPARAMS;

RemovePWD : WordBool;

begin

//指定撥號連接的撥號參數

with RASDIALPARAMSData do

begin

dwSize := sizeof( RASDIALPARAMS );//結構大小

szEntryName := '163';//指定撥號連接的名稱

szUserName := 'MyName';//指定用戶名稱

szPassword := 'MyPassword';//指定用戶密碼

szDomain := 'MyDomain';//指定域名

szCallbackNumber := '';//指定回叫號碼

szPhoneNumber := '';//指定撥號號碼

end;

RemovePWD := false;//不需要刪除用戶密碼


//設置指定撥號連接的撥號參數

dwResult := RasSetEntryDialParams( ''

@RASDIALPARAMSData

RemovePWD );


if dwResult <> 0 then //設置指定撥號連接的撥號參數失敗

memo1.lines.add( '設置'+StrPAS(RASDIALPARAMSData.szEntryName )+'撥號參數失敗:' + GetRasError( dwResult ))

else

begin//顯示指定撥號連接的撥號參數

memo1.lines.add( StrPAS(RASDIALPARAMSData.szEntryName )+'撥號參數設置成功');

memo1.lines.add( '用戶名稱:' + StrPAS(RASDIALPARAMSData.szUserName ));

memo1.lines.add( '用戶密碼:' + StrPAS(RASDIALPARAMSData.szPassword ));

memo1.lines.add( '域 名:' + StrPAS(RASDIALPARAMSData.szDomain ));

memo1.lines.add( '回叫號碼:' + StrPAS(RASDIALPARAMSData.szCallbackNumber ));

memo1.lines.add( '撥號號碼:' + StrPAS(RASDIALPARAMSData.szPhoneNumber ));

end;

end;


四、用指定的撥號連接撥號、掛斷指定的撥號連接

1、用指定的撥號連接撥號

撥號有兩種方法,一種是調用撥號網絡中的撥號程序,就象用戶自己用鼠標雙擊撥號連接名稱一 樣,用戶可以修改撥號號碼、用戶名稱和用戶密碼,最后由撥號網絡來完成撥號過程;另一個方法則 是調用RasAPI函數.

(1)用撥號網絡中的撥號程序

在程序中可以用如下代碼:

winexec('rundll32.exe rnaui.dll

RnaDial 169'

SW_SHOWNORMAL);

其中字符串中的最后一個參數"169"為撥號連接的名稱。

(2)用RasAPI函數撥號 用撥號連接撥號的RasAPI函數為RasDial,其函數原型為:

function RasDial(

pRasDialExtensions : LPRASDIALEXTENSIONS;//在WIN9X下無用

可設置為NIL

lpszPhonebook : PChar;//電話本名稱,在Win9X下無作用

可為空字符串

lpRasDialParams : LPRASDIALPARAMS;//撥號參數

dwNotifierType : DWORD;//消息通知方式

handle : TRasDialFunc;//消息處理事件

var lphRasConn : DWORD//返回的成功連接的連接句柄

) : DWORD; stdcall;

function RasDial;external RasApiDll name 'RasDialA';


參數pRASDIALPARAMS的說明同RasGetEntryDialParams.

參數dwNotifierType表示消息通知方式.在撥號過程中,系統發出撥號事件消息可以通知撥號 進度,因而需要提供接受消息的方式和處理消息的函數.當其值為$FFFFFFFF時,則參數handle被 視為一個窗口的句柄,事件消息被發生該窗口處理;當其值為0時,handle被視為TRasDialFunc類型 的函數的指針;當其值為1時,handle被視為TRasDialFunc1類型的函數的指針.

參數handle表示消息處理函數指針,其類型可以THandle、TRasDialFunc、TRasDialFunc1.當該 參數不為NULL或NIL時,其代表的消息處理函數指針將接受撥號進度通知消息;為NIL時,撥號過程由異步方式變為同步方式,直到撥號過程成功或失敗后RasDial函數才返回.詳細可參見Delphi幫助文件中關于RasDial函數的幫助。

當撥號連接成功時,lphRasConn將表示其連接句柄.


函數返回值為0表示執行成功;否則為錯誤代碼.

下面是一個應用例子,按指定的撥號參數撥號.


var

RASDIALPARAMSData : RASDIALPARAMS;

dwResult : DWord;

RasCon : DWord;

begin

//指定撥號連接的撥號參數

with RASDIALPARAMSData do

begin

dwSize := sizeof( RASDIALPARAMS );//結構大小

szEntryName := '163';//指定撥號連接的名稱

szUserName := 'MyName';//指定用戶名稱

szPassword := 'MyPassword';//指定用戶密碼

szDomain := 'MyDomain';//指定域名

szCallbackNumber := '';//指定回叫號碼

szPhoneNumber := '';//指定撥號號碼

end;


//用指定的撥號參數撥號,采用同步撥號方式

dwResult := RasDial( NIL

''

@RASDIALPARAMSData

0

NIL

RasCon );


if dwResult <> 0 then //設置指定撥號連接的撥號參數失敗

memo1.lines.add( '用'+StrPAS(RASDIALPARAMSData.szEntryName )+'撥號失敗:'

+ GetRasError( dwResult ))

else

memo1.lines.add( '用'+StrPAS(RASDIALPARAMSData.szEntryName )+'撥號成功!' );

end;


2、掛斷指定的撥號連接

掛斷撥號連接的RasAPI函數為RasHangUp,其函數原型為:

function RasHangUp(

hRasConn : DWORD//要掛斷的撥號連接的句柄

) : DWORD; stdcall;

function RasHangUp;external RasApiDll name 'RasHangUpA';

函數返回值為0表示執行成功;否則為錯誤代碼.

下面是一個應用例子,掛斷由RasDial建立的撥號連接.


//掛斷由RasDial建立的撥號連接

dwResult := RasHangUp( RasCon );

if dwResult <> 0 then //掛斷失敗

memo1.lines.add( '掛斷失敗:' + GetRasError( dwResult ))

else

memo1.lines.add( '掛斷成功!');


五、獲取當前活動的連接及其連接狀態

1、獲取當前活動的連接

獲取當前活動的連接的RasAPI函數為RasEnumConnections,其函數原型為:

DWORD RasEnumConnections(
  LPRASCONN lprasconn,     // buffer to receive connections
                           //  data
  LPDWORD lpcb,            // size in bytes of buffer
  LPDWORD lpcConnections   // number of connections written
                           //  to buffer
); 

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

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

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

        亚洲综合色噜噜狠狠| 95精品视频在线| 成人av电影在线播放| 日韩欧美卡一卡二| 久久久噜噜噜久噜久久综合| 国产精品伊人色| 国产精品色婷婷| 欧美亚洲动漫制服丝袜| 天天影视网天天综合色在线播放| 欧美久久久久久蜜桃| 国产精品亚洲第一| 亚洲精选在线视频| 精品粉嫩超白一线天av| www.av亚洲| 热久久一区二区| 国产精品久久久久久久岛一牛影视| 日本久久一区二区三区| 久久激情五月激情| 一区二区三区av电影 | 五月婷婷激情综合| 国产亚洲va综合人人澡精品| 色婷婷久久综合| 国产一区二区三区在线观看免费视频 | 国产高清一区日本| 亚洲久草在线视频| 亚洲精品一区二区三区蜜桃下载| 91丨porny丨国产| 久久精品国产澳门| 亚洲午夜影视影院在线观看| 国产亚洲精久久久久久| 欧美日韩国产免费| 94-欧美-setu| 国产精品一区专区| 免费久久精品视频| 亚洲一区在线电影| 国产精品久久久久国产精品日日| 欧美一级黄色录像| 欧美日韩精品一区二区三区四区| 丰满亚洲少妇av| 国产原创一区二区三区| 日本不卡视频一二三区| 亚洲乱码国产乱码精品精可以看| 久久久久久影视| 精品国产91九色蝌蚪| 欧美疯狂性受xxxxx喷水图片| 色一区在线观看| 91老师片黄在线观看| 成人激情黄色小说| 国产69精品久久久久777| 国产一区在线视频| 国产专区欧美精品| 国产一区二区三区日韩| 麻豆一区二区99久久久久| 亚洲午夜在线视频| 亚洲一区二区美女| 亚洲国产综合91精品麻豆| 亚洲视频免费看| 亚洲另类春色校园小说| 亚洲三级小视频| 亚洲一线二线三线久久久| 亚洲精品视频自拍| 亚欧色一区w666天堂| 亚洲国产另类精品专区| 亚洲韩国一区二区三区| 精品99一区二区| 2020国产精品自拍| 欧美国产国产综合| ●精品国产综合乱码久久久久| 中文字幕乱码一区二区免费| 亚洲欧洲99久久| 亚洲区小说区图片区qvod| 91成人免费电影| 欧美日韩国产首页| 欧美成人a∨高清免费观看| 精品国产凹凸成av人网站| 久久亚洲欧美国产精品乐播| 日本一区二区三区高清不卡| 中文字幕在线播放不卡一区| 一区二区久久久久| 爽好久久久欧美精品| 麻豆一区二区三| 国产大陆精品国产| 91麻豆国产福利在线观看| 国产一区高清在线| 国产一区二区三区免费观看| 成人99免费视频| 日韩二区在线观看| 韩国欧美一区二区| 本田岬高潮一区二区三区| 欧美性一级生活| 日韩视频一区在线观看| 国产午夜精品福利| 最好看的中文字幕久久| 日韩精品亚洲一区| 国产91清纯白嫩初高中在线观看| 色综合久久六月婷婷中文字幕| 欧美午夜电影一区| 久久久99免费| 亚洲免费av观看| 蜜桃av一区二区三区电影| 成人av在线一区二区三区| 制服视频三区第一页精品| 久久久久一区二区三区四区| 亚洲成av人影院在线观看网| 丰满少妇在线播放bd日韩电影| 91麻豆免费在线观看| 精品少妇一区二区三区日产乱码| 日韩一区二区三区在线观看| 亚洲男帅同性gay1069| 国产精品一级片在线观看| 欧美精品在线观看一区二区| 国产精品不卡在线观看| 久99久精品视频免费观看| 欧美视频一区二| 亚洲三级理论片| 高清日韩电视剧大全免费| 日韩亚洲欧美成人一区| 日韩一区二区中文字幕| 亚洲国产精品久久久久秋霞影院| 成人免费视频视频在线观看免费 | 麻豆精品国产传媒mv男同| 91啪亚洲精品| 中文字幕av一区二区三区| 国产乱一区二区| 日韩欧美一区二区久久婷婷| 亚洲一区二区三区四区五区黄| 成人免费av资源| 久久九九久久九九| 美国十次综合导航| 欧美一级在线免费| 精品国产免费久久| 美女视频网站黄色亚洲| 欧美精品色一区二区三区| 日韩欧美亚洲国产另类| 天堂久久久久va久久久久| 欧美视频完全免费看| 日韩欧美在线不卡| 免费欧美在线视频| 欧美tickling网站挠脚心| 精品中文字幕一区二区| 91在线视频18| 一区二区三区四区激情| 一本一道久久a久久精品综合蜜臀| 中文字幕在线不卡一区二区三区| 菠萝蜜视频在线观看一区| 亚洲男人天堂一区| 欧美精品 日韩| 美女国产一区二区三区| 精品国产乱码久久久久久影片| 国产在线一区二区| 国产精品免费视频观看| 欧美日韩视频在线一区二区| 男女视频一区二区| 久久久九九九九| 99久久精品国产毛片| 亚洲国产va精品久久久不卡综合| 欧美性xxxxxx少妇| 另类小说欧美激情| 国产精品国产三级国产普通话99| 一本大道久久a久久综合婷婷| 天使萌一区二区三区免费观看| 欧美大胆人体bbbb| 成人免费视频一区二区| 亚洲一区二区三区视频在线播放 | 成人一道本在线| 亚洲高清免费观看| 久久久久国产精品厨房| 色综合久久久久网| 麻豆精品一区二区av白丝在线| 欧美一区二区美女| 91老师国产黑色丝袜在线| 午夜精品久久久久久久| 国产色一区二区| 911精品国产一区二区在线| 国产v综合v亚洲欧| 日本不卡一二三| 亚洲日本护士毛茸茸| 精品三级在线看| 欧美午夜电影一区| 岛国一区二区三区| 美腿丝袜亚洲一区| |精品福利一区二区三区| 国产不卡在线视频| 人人狠狠综合久久亚洲| 亚洲丝袜自拍清纯另类| 2020日本不卡一区二区视频| 欧美日韩国产精品成人| 不卡一卡二卡三乱码免费网站| 久久精品999| 日韩制服丝袜av| 欧美日韩亚洲综合| 91免费视频观看| av色综合久久天堂av综合| 国产一区二区三区精品欧美日韩一区二区三区 | 91久久精品一区二区| 国产精品白丝jk黑袜喷水| 视频一区中文字幕| 亚洲成人动漫精品| 夜色激情一区二区| 一区二区三区在线高清|