国产高清在线免费观看-国产高清在线免费无码-国产高清在线男人的天堂-国产高清在线视频-国产高清在线视频精品视频-国产高清在线视频伊甸园

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

ActiveX組件及其注冊(cè)

admin
2011年3月11日 23:12 本文熱度 4064
前言:隨著計(jì)算機(jī)軟件編程技術(shù)的發(fā)展和應(yīng)用的需要,人們?cè)絹碓揭兄赜贏ctiveX組件。那么什么是ActiveX組件呢?在此筆者給出簡(jiǎn)單的介紹。另外,關(guān)于如何對(duì)ActiveX組件進(jìn)行注冊(cè),在目前所見到的資料中間,難以得到一個(gè)比較完全答復(fù)。尤其,關(guān)于ActiveX EXE 注冊(cè)的文章更是微乎其微,而且即使給出的方法也比較片面、單一。鑒于此,筆者通過大量的查閱和比較深入的研究,在此對(duì)ActiveX組件的注冊(cè)問題給出一個(gè)比較完全、系統(tǒng)的總結(jié)。希望給對(duì)此感興趣的朋友一個(gè)參考。

一.概述

在接下來的部分,首先將就ActiveX組件的概念以及它的分類進(jìn)行簡(jiǎn)要的介紹,從而讓讀者對(duì)ActiveX組件有一個(gè)概念上的把握。隨后,將就如何注冊(cè)ActiveX組件的問題進(jìn)行比較深入詳細(xì)的解釋。分別給出ActiveX 控件、ActiveX DLL、ActiveX EXE的具體注冊(cè)方法。并在此基礎(chǔ)上,對(duì)如何在制作安裝程序并安裝后,實(shí)現(xiàn)對(duì) ActiveX組件的注冊(cè)給出了若干解決方案。

二.ActiveX組件的概念

在我們平常的閱讀和編程學(xué)習(xí)中,我們經(jīng)常可以看到諸如“ActiveX控件”,“ActiveX組件”等名詞。那么什么是“ActiveX控件”,什么是“ActiveX組件”呢,它們有什么區(qū)別呢?
首先,我們應(yīng)該知道,組件是建立在 ActiveX技術(shù)上的代碼的獨(dú)立單元,用于通過特定的接口提供特定的一組服務(wù)。它提供客戶端在運(yùn)行時(shí)所請(qǐng)求的對(duì)象。在 Remote Data Service 中,當(dāng)組件包括支持業(yè)務(wù)進(jìn)程的關(guān)鍵字邏輯時(shí)也被稱為“業(yè)務(wù)對(duì)象”。
其次,ActiveX是使軟件組件能夠在網(wǎng)絡(luò)環(huán)境中交互作用而與創(chuàng)建組件的語言無關(guān)的一套封裝技術(shù)。實(shí)現(xiàn)ActiveX 的基礎(chǔ)是“組件對(duì)象模型”(Component Object Model ,縮寫為COM)。它也是提供封裝 COM組件并將其置入應(yīng)用程序(如(但不限于)Web 瀏覽器)的一種方法。
最后,上面一段話中提到的COM(Components Object Model)是軟件組件互相通訊的一種方式。它是一種二進(jìn)制和網(wǎng)絡(luò)標(biāo)準(zhǔn),允許任意兩個(gè)組件互相通訊,而不管它們是在什么計(jì)算機(jī)上運(yùn)行(只要計(jì)算機(jī)是相連的),不管各計(jì)算機(jī)運(yùn)行的是什么操作系統(tǒng)(只要該操作系統(tǒng)支持 COM),也不管該組件是用什么語言編寫的。COM 還提供了位置透明性:在編寫組件時(shí),其他組件是進(jìn)程內(nèi) DLL、本地 EXE 還是位于其他計(jì)算機(jī)上的組件,都不會(huì)產(chǎn)生太大影響。  
這樣以來,我們可以給ActiveX組件(ActiveX component)一個(gè)定義,就是:一個(gè)應(yīng)用程序或開發(fā)工具,可以使用另一個(gè)應(yīng)用程序支持的對(duì)象,或者提供自己的對(duì)象供另一個(gè)應(yīng)用程序使用。以前這些程序和對(duì)象稱為“OLE 自動(dòng)服務(wù)程序”和“OLE 自動(dòng)服務(wù)器”。
至于ActiveX控件,則只是ActiveX組件的一個(gè)分類,是一個(gè)標(biāo)準(zhǔn)的用戶接口元素,是具有 .OCX 文件擴(kuò)展名或者可插入對(duì)象的文件,能夠快速地把窗體和對(duì)話框組裝起來;當(dāng)使用自定義控件對(duì)話框?qū)⑵湓黾拥焦こ讨腥r(shí),工具箱將被擴(kuò)展。在以前ActiveX控件被稱作 OLE 控件。ActiveX 控件還使 Internet 更加生動(dòng),為 World Wide Web 頁增加了有趣的新功能。

三.ActiveX組件的分類

ActiveX組件可以分為三類:
● ActiveX控件
● ActiveX文檔
● 代碼成分(OLE自動(dòng)服務(wù)器)

(1)ActiveX控件

可以從無到有被用戶完全建立,它能被建立在另一個(gè)控件之上,或者它可容納多個(gè)已經(jīng)有的控件。比如 VB中的ActiveX控件就是建立在VB的用戶控件對(duì)象上的。當(dāng)創(chuàng)建一個(gè)ActiveX控件時(shí),就創(chuàng)建了一個(gè)帶有擴(kuò)展名為 .ctl 的控件類文件。我們通常使用這種文件來創(chuàng)建實(shí)際的控件,其擴(kuò)展名為 .ocx 。

(2)ActiveX文檔

通常,在具體的編程環(huán)境如VB 、VC++中,可以用傳統(tǒng)文檔的語義學(xué)來創(chuàng)建完全的應(yīng)用程序。換句話說,它不僅有應(yīng)用程序的功能,而且還有文檔性能的靈活性 ─ 當(dāng)用戶打開一個(gè) ActiveX文檔時(shí),將不僅擁有應(yīng)用程序的全部功能,而且能保持和發(fā)布應(yīng)用程序原有數(shù)據(jù)的“備份”,因而,“文檔”實(shí)際上是主動(dòng)的。比如, VB的ActiveX文檔是建立在VB用戶文檔的基礎(chǔ)上的。創(chuàng)建一個(gè)ActiveX文檔時(shí),用帶有擴(kuò)展名 .dob 的文件保存。VB使用這種DOB文件來創(chuàng)建EXE或DLL文件,這種EXE或DLL文件可以為ActiveX文擋提供實(shí)際的代碼。另外VB生成一個(gè)帶擴(kuò)展名 .vbd 的說明文件,它對(duì)ActiveX文檔進(jìn)行描述,用主應(yīng)用程序可以打開這個(gè)文件。對(duì)于ActiveX文檔,可以讓用戶保存數(shù)據(jù),這些數(shù)據(jù)被存在VBD文件里。

(3)代碼成分

以前被稱作OLE自動(dòng)服務(wù)器。這些對(duì)象可以讓用戶在其他程序里使用其代碼。比如,有一個(gè)陳列在代碼成分里的時(shí)鐘例程,這樣以來此例程可以被其他程序使用。代碼成分(ActiveX EXE, ActiveX DLL)能夠支持屬性與方法。

四.建立ActiveX組件的選擇

ActiveX組件的各個(gè)內(nèi)容,它們的應(yīng)用是不同的。那么如何進(jìn)行選擇,以來確定究竟該創(chuàng)建那種組件呢?
首先,在這里我們務(wù)必弄清楚ActiveX組件的運(yùn)行方式,并知道相應(yīng)的特點(diǎn)。一般來說,ActiveX組件有兩種運(yùn)行方式:它們是進(jìn)程外服務(wù)器運(yùn)行和進(jìn)程內(nèi)服務(wù)器運(yùn)行。
如果把一個(gè)ActiveX組件作為一個(gè)可執(zhí)行文件(EXE文件)的一部分,那么它就是一個(gè)進(jìn)程外服務(wù)器并在自己的進(jìn)程內(nèi)運(yùn)行。若把它作為一個(gè)動(dòng)態(tài)鏈接庫(DLL文件)的一部分,則它是一個(gè)進(jìn)程內(nèi)服務(wù)器并作為客戶應(yīng)用程序在統(tǒng)一進(jìn)程里運(yùn)行。若用戶的ActiveX組件是一個(gè)進(jìn)程外服務(wù)器,他就是一個(gè)可以單獨(dú)運(yùn)行的EXE文件。使用進(jìn)程內(nèi)服務(wù)器的應(yīng)用程序通常比使用進(jìn)程外服務(wù)器的應(yīng)用程序運(yùn)行速度快,因?yàn)閼?yīng)用程序沒有通過進(jìn)程邊界去使用對(duì)象屬性,方法與事件。
如果將建立的ActiveX文檔作為一個(gè)進(jìn)程內(nèi)組件(DLL文件),進(jìn)程內(nèi)組件的性能超過同樣編譯成EXE的組件。另外,如果多個(gè)程序訪問同一個(gè)EXE文件,將會(huì)覆蓋全局?jǐn)?shù)據(jù);如果他們都有自己的進(jìn)程內(nèi)服務(wù)器,這種事情不會(huì)發(fā)生。
客戶應(yīng)用程序和內(nèi)進(jìn)程組件共享相同的內(nèi)存空間,所以在調(diào)試內(nèi)進(jìn)程代碼部件的方法時(shí),可以用客戶應(yīng)用程序的堆棧輸參數(shù)。而對(duì)于外進(jìn)程組件來說,在調(diào)試代碼部件的過程中,方法的參數(shù)必須被移動(dòng)來通過兩個(gè)進(jìn)程間的內(nèi)存界線,這被稱為marshaling。
這樣,我們可以得出如下關(guān)于如何選擇所創(chuàng)建組件類型的結(jié)論:
(1)若想建立一個(gè)在可調(diào)用的代碼中提供例程的不可視組件,可以建立一個(gè)代碼組件(ActiveX EXE 或AtiveX DLL).
(2)若想建立一個(gè)能在同一個(gè)進(jìn)程中與應(yīng)用程序運(yùn)行的組件, 可以建立一個(gè)AtiveX DLL.
(3)若想建立一個(gè)能服務(wù)多個(gè)應(yīng)用程序又能在一臺(tái)遠(yuǎn)程計(jì)算機(jī)上運(yùn)行的組件,可以建立一個(gè)AtiveX EXE。
(4)若想建立一個(gè)可視組件,并在設(shè)計(jì)時(shí)能被拖動(dòng)到一個(gè)應(yīng)用程序中,可建立一個(gè)AtiveX 控件。  
(5)若想建立一個(gè)可視組件,并在運(yùn)行時(shí)能接受一個(gè)應(yīng)用程序窗口,可建立一個(gè)ActiveX 文檔。
至于創(chuàng)建組件之后,如何編程,如何被使用,可以參照有關(guān)編程方面的書籍。在這里,我們假設(shè)ActiveX組件的設(shè)計(jì)已經(jīng)完成,然后對(duì)ActiveX組件的注冊(cè)進(jìn)行較為詳細(xì)的討論。

五.ActiveX組件注冊(cè)的幾種方法  

不同的ActiveX組件,它們注冊(cè)有著不同的方法,現(xiàn)在就針對(duì)ActiveX控件、ActiveX DLL 、ActiveX EXE三種不同的組件分別給出解決方案。

1.ActiveX控件的注冊(cè)

ActiveX 控件與開發(fā)平臺(tái)無關(guān),在一種編程語言中開發(fā)出來的ActiveX 控件,幾乎不作任何修改,便可以在另一種編程語言中使用。但是ActiveX 控件被開發(fā)出來以后,要想在Windows中被正確使用,首先必須將控件文件復(fù)制到硬盤中,然后在Windows中進(jìn)行注冊(cè)。未在Windows中注冊(cè)過的ActiveX 控件是不能被使用的。一般注冊(cè)VB6.0 ActiveX 控件的方法有如下幾種:
(1)使用Regsvr32.exe 程序?qū)B ActiveX 控件進(jìn)行注冊(cè)。 該文件位于Windows目錄的system子目錄下。使用方法如下:點(diǎn)擊“開始”,在彈出的菜單中再點(diǎn)擊“運(yùn)行”,在出現(xiàn)的對(duì)話框中輸入以下命令:
<控件路徑和ActiveX 控件文件名> 注冊(cè)一個(gè)ActiveX 控件。此處 regsvr32的路徑名可以省略。而且一般可將被注冊(cè)的ActiveX 控件拷貝到\windows\system下,這樣我們也不用在注冊(cè)時(shí)輸入控件的路徑了。  
如果想要解除對(duì)某一個(gè)ActiveX 控件的注冊(cè),只需要在regsvr32后面加一個(gè)參數(shù)“/u”,即 <被注冊(cè)過的ActiveX 控件文件名> 。
(2)利用某些編程環(huán)境中的瀏覽功能。比如在VB6.0中可以點(diǎn)擊界面上的“工程”,在彈出的下拉菜單中,點(diǎn)擊“部件”一項(xiàng),隨后出現(xiàn)了一個(gè)新的界面。在此界面上利用“瀏覽”按鈕,找到并選中需要注冊(cè)的控件,確定后便注冊(cè)到“部件”界面的“控件”欄里。
利用上面兩種方法進(jìn)行控件注冊(cè)后,便可以讓部件開發(fā)人員在實(shí)際的編程中,使用該控件了。
(3)使用安裝程序制作軟件——InstallShield 。使用 Regsvr32.exe 程序來注冊(cè)ActiveX 控件,以及利用“瀏覽”來注冊(cè),雖然簡(jiǎn)單,但是都需要手工注冊(cè),在不用時(shí),還需要手工解除,所以對(duì)于一個(gè)使用了該控件的應(yīng)用程序來說并不實(shí)用。一般大型的應(yīng)用軟件都需要一個(gè)安裝程序,在安裝程序中解決ActiveX 控件注冊(cè)就非常實(shí)用了。使用InstallShield可以制作出專業(yè)級(jí)的安裝程序,還可以注冊(cè)其中的ActiveX 控件;而且卸載軟件時(shí),可以自動(dòng)注銷以前注冊(cè)的ActiveX 控件。其做法就是按照InstallShield 的向?qū)ВM(jìn)行安裝程序的制作,在進(jìn)行到最后一步,點(diǎn)擊“Finish”后,“InstallShield”將進(jìn)行下一步的“詳細(xì)定制”。選擇“File Groups”選項(xiàng),將其中包含需要自注冊(cè)ActiveX控件文件項(xiàng)的“Self-Registered”屬性改為“yes”.
(4)安裝過程中的自注冊(cè)。 ActiveX控件在安裝的時(shí)候必須被注冊(cè),方可以在應(yīng)用程序中被調(diào)用。往往利用編程工具自帶的安裝制作工具可以達(dá)到這個(gè)目的。仍以VB6.0為例。利用VB6.0本身自帶的創(chuàng)建安裝程序的工具軟件:Package & Deployment Wizard。只要將ActiveX控件包含在發(fā)布的文件中間,Package & Deployment Wizard將根據(jù)需要自動(dòng)將該控件打成自注冊(cè)文件的屬性。萬一,我們沒有成功的話,可以修改安裝程序的安裝文件列表 setup.lst。將相應(yīng)宏中的參數(shù)設(shè)置為DLLSelfRegister。如果不需要自注冊(cè),可以將該項(xiàng)刪除(注意逗號(hào)要保留)。
例如下面是作者自己編的一個(gè)ActiveX控件,利用上述方法創(chuàng)建安裝程序后,其后面的參數(shù)變?yōu)椋?
[Setup1 Files]
[email protected],$(WinSysPath),$(DLLSelfRegister),$(Shared),2/19/01 9:27:30 AM,36864,1.0.0.0
其中,加粗的一項(xiàng) $(DLLSelfRegister) 就是標(biāo)明自注冊(cè)的宏參數(shù)設(shè)置。可以手工加或刪。
(5)補(bǔ)充一點(diǎn)。有些公司開發(fā)的ActiveX控件注冊(cè)需要利用附帶的專門的工具軟件。運(yùn)行該工具,就可以將相應(yīng)的ActiveX控件注冊(cè)。這仍然屬于手工注冊(cè),這些ActiveX控件被發(fā)布時(shí),一般享有版權(quán),同時(shí)會(huì)有專門的說明。

2.ActiveX DLL的注冊(cè)

ActiveX DLL的注冊(cè)與ActiveX控件的注冊(cè)基本上相似,上述用于ActiveX控件注冊(cè)的方法基本都適用于ActiveX DLL的注冊(cè)。在此可以參照上述有關(guān)ActiveX控件注冊(cè)的方法進(jìn)行注冊(cè)。

3.ActiveX EXE的注冊(cè)

作為一種進(jìn)程外運(yùn)行的組件,ActiveX EXE的注冊(cè)方法異于ActiveX控件和ActiveX DLL的注冊(cè),并且在運(yùn)用中有一定的難度。在此,將它們的注冊(cè)方法總結(jié)如下:  
(1)“瀏覽”的方法。以VB6.0為例。在VB6.0編程界面上,進(jìn)入“工程”,在彈出的下拉菜單中間選擇“引用”,然后在出現(xiàn)的新界面上點(diǎn)擊“瀏覽”,找到并選中需要注冊(cè)的組件,確定后,便可以在列表中間看到對(duì)應(yīng)項(xiàng)了。
(2)直接運(yùn)行的方法。注冊(cè)進(jìn)程外組件ActiveX EXE時(shí),只要在VB6.0的環(huán)境中運(yùn)行一下該組件代碼,便可以實(shí)現(xiàn)注冊(cè)了。這時(shí)ActiveX EXE的信息被加入到Windows注冊(cè)表中。但是,必須注意,此信息只是在VB開發(fā)環(huán)境中運(yùn)行此程序時(shí)被臨時(shí)加入。當(dāng)程序停止時(shí),有關(guān)如何訪問這些對(duì)象的信息便從系統(tǒng)中清除掉。
(3)利用安裝制作工具。比如在VB6.0中,可以利用VB6.0本身自帶的創(chuàng)建安裝程序的工具軟件:Package & Deployment Wizard。在創(chuàng)建安裝程序的過程中,自動(dòng)將其變?yōu)樽宰?cè)。若不然,同樣可以修改安裝程序的安裝文件列表 setup.lst。將相應(yīng)宏中的參數(shù)設(shè)置為EXESelfRegister。如果不需要自注冊(cè),可以將該項(xiàng)刪除(注意逗號(hào)要保留)。
例如下面是作者自己編的一個(gè)進(jìn)程外組件 ,利用上述方法創(chuàng)建安裝程序后,其后面的參數(shù)變?yōu)椋?nbsp; 
[Setup1 Files]
[email protected],$(WinSysPath),$(EXESelfRegister),$(Shared),12/25/00 8:47:44 PM,57344,1.0.0.0
其中,加粗的一項(xiàng) $(EXESelfRegister) 就是標(biāo)明自注冊(cè)的宏參數(shù)設(shè)置。可以手工加或刪。
(4)如果打算把進(jìn)程外服務(wù)器安裝到另外一臺(tái)機(jī)器上自注冊(cè),而且脫離編程環(huán)境時(shí),可以先將文件拷貝到另外機(jī)器上,執(zhí)行時(shí)在命令行上加上參數(shù) “ /regserver”,如果取消注冊(cè),可以在命令行上加上“ /unregserver”。使用 /regserver命令選項(xiàng)注冊(cè)進(jìn)程外COM服務(wù)器時(shí),可以不去理會(huì)手工啟動(dòng)時(shí)程序工作的正常方式。Sub Main或Class_Initialize程序都不會(huì)被調(diào)用,只有由當(dāng)該編程環(huán)境包括在EXE文件中的注冊(cè)邏輯才會(huì)運(yùn)行。

六.總結(jié)

上面,就日常的學(xué)習(xí)中所理解的有關(guān)ActiveX 組件方面的概念性的東西,作了一些簡(jiǎn)單的總結(jié)。在,注冊(cè)方面,給出了一些較為實(shí)用的方法。當(dāng)然,我們也可以自己動(dòng)手,親自編制一些小程序,實(shí)現(xiàn)ActiveX 控件的注冊(cè)。如在VC++中,使用Windows API函數(shù)LoadLibrary載入ActiveX控件;再使用GetProcAddress函數(shù)獲取ActiveX 控件中注冊(cè)函數(shù)DLLRegisterServer(注銷函數(shù)為DLLUnRegisterServer)指針;最后再調(diào)用注冊(cè)函數(shù)DLLRegisterServer(或注銷函數(shù)為DLLUnRegisterServer)。感興趣的,可以參照相關(guān)的資料,自己動(dòng)手進(jìn)行編程。
當(dāng)然,在實(shí)際編程應(yīng)用中,往往需要自注冊(cè)。對(duì)于ActiveX 控件和ActiveX DLL可以在制作安裝程序后,安裝時(shí)自動(dòng)注冊(cè)。而對(duì)于ActiveX EXE 可能要麻煩一些,我們不可能
在每次運(yùn)行軟件時(shí),先在編程環(huán)境中,通過代碼的編譯或?yàn)g覽來注冊(cè)。通過實(shí)踐,總結(jié)出如下的方法來實(shí)現(xiàn)自注冊(cè):
(1)利用編程工具自帶的制作安裝程序的工具,來制作安裝程序,安裝時(shí),可以自動(dòng)實(shí)現(xiàn)ActiveX EXE的自注冊(cè)。
(2)利用加上參數(shù) /regserver,實(shí)現(xiàn)自注冊(cè)。在VB6.0編程中,當(dāng)需要用到ActiveX EXE時(shí),通過VB6.0的系統(tǒng)函數(shù)shell(),同時(shí)進(jìn)行調(diào)用和自注冊(cè)。命令格式為:
shell “[path\] filename /regserser”
卸載時(shí),只需將 /regserser 替換為 /unregserser就行了。假如組件文件與應(yīng)用程序在同一個(gè)目錄中或在 \windows\system\下,組件文件路徑名可以省略。
(3)假如想用Installshield為應(yīng)用程序制作專業(yè)級(jí)的安裝程序,同時(shí)又需要ActiveX EXE的自注冊(cè),可以將應(yīng)用程序用Installshield打包,而ActiveX EXE用VB6.0打包,制作出兩個(gè)安裝程序。在使用時(shí),兩個(gè)安裝程序都運(yùn)行一次,這樣,也可以實(shí)現(xiàn)要求,只是比較麻煩。  
上面是筆者在實(shí)際編程實(shí)踐中所總結(jié)出的經(jīng)驗(yàn),不足之處,歡迎批評(píng)指正。

該文章在 2011/3/11 23:12:30 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲(chǔ)管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: A片扒开双腿猛进入免费观 A片扒开双腿猛进入免费观看 | 日日摸天天碰中文字幕你懂的 | 欧美孕妇乱大交xxxxx | 国产成人片a麻豆ⅴ在线观看 | 97碰碰碰人妻无码视频 | 欧美精品久久久久久久 | 天天操天天摸天天曰天天干天天弄天天干 | 自拍偷拍1区2区3区不卡 | 天堂av无码大芭蕉伊人 | 国产三级成人 | 亚洲AV成人无码久久精品A片 | 97碰碰碰人妻无码视频 | 日韩欧美理论 | 伊人久久大香线蕉av桃花岛 | 欧美日韩亚洲一区二区三区一 | 欧美理论片在线观看2025年 | 99精品国产一区二区三区在线观看 | 亚洲精品蜜夜内射 | 亚洲岛国av无码无遮挡在线观看 | 欧美日韩激情一区二区 | 久久人妻免费毛片 | 国产欧美精品一区二区色综合 | 在线观看字幕 | 一本一道久久综合狠狠老 | 国产成人久久精品一区二区三区 | 69久久国产露脸精品国产 | 性少妇中国内射xxxx狠干 | 亚洲精品无码mⅴ在线观看 亚洲精品无码av专区最新 | 人妻无码aⅴ中文字幕 | 黑人vs亚洲美女在线观看 | 制服丝袜国产中文精品 | 国产丝袜第一页 | 亚洲av无码国产精品一区亚洲午夜精品在线 | 中国少妇内射xxxx狠干 | 日韩x做受欧美 | 亚洲成熟网站源码公司51专业提供高质量网站解决方案 | 国产三级电影红桃视频 | 国产午夜精品久久精品电影 | 亚洲av成人一区二区三区av | 亚洲精品国产成人精品 | 国产精品爽爽久久久久久 |