<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    如鵬網(wǎng) 大學(xué)生計算機(jī)學(xué)習(xí)社區(qū)

    CowNew開源團(tuán)隊

    http://www.cownew.com 郵件請聯(lián)系 about521 at 163.com

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      363 隨筆 :: 2 文章 :: 808 評論 :: 0 Trackbacks

    #

    SWT中調(diào)用Automation的方式 這篇文章中我們介紹了SWT中通過Automation訪問IE的方式,但是只是簡單的URL導(dǎo)航,沒有自動填表單、自動提交等功能。我們對其進(jìn)行了升級,采用了新的操作方式,充分利用了SWT對OLE的支持,裁減掉大量代碼。現(xiàn)在可以實(shí)現(xiàn)自動填表單、自動提交等功能。不過暫時還無法響應(yīng)IE的事件。
    核心代碼如下:

    package test;

    import org.eclipse.swt.SWTException;
    import org.eclipse.swt.internal.ole.win32.COM;
    import org.eclipse.swt.internal.ole.win32.GUID;
    import org.eclipse.swt.internal.ole.win32.IUnknown;
    import org.eclipse.swt.ole.win32.OLE;
    import org.eclipse.swt.ole.win32.OleClientSite;
    import org.eclipse.swt.widgets.Composite;

    /**
     *
     * @author 楊中科
     *
     */
    public class AutomationClientSite extends OleClientSite
    {
     public AutomationClientSite(Composite parent, int style, String progId)
     {
      super(parent, style);
      try
      {
       appClsid = getClassID(progId);
       if (appClsid == null)
        OLE.error(OLE.ERROR_INVALID_CLASSID);

       //使用CoCreateInstance創(chuàng)建一個進(jìn)程外Automation服務(wù)器
       int[] address = new int[1];
       int result = COM.CoCreateInstance(getClassID(progId), 0,
         COM.CLSCTX_INPROC_SERVER | COM.CLSCTX_LOCAL_SERVER,
         COM.IIDIUnknown, address);
       if (result != COM.S_OK)
        OLE.error(OLE.ERROR_CANNOT_CREATE_OBJECT, result);

       objIUnknown = new IUnknown(address[0]);

      } catch (SWTException e)
      {
       dispose();
       disposeCOMInterfaces();
       throw e;
      }
     }

     protected GUID getClassID(String progId)
     {
      GUID guid = new GUID();
      // create a null terminated array of char
      char[] buffer = null;
      if (progId != null)
      {
       int count = progId.length();
       buffer = new char[count + 1];
       progId.getChars(0, count, buffer, 0);
      }
      if (COM.CLSIDFromProgID(buffer, guid) != COM.S_OK)
      {
       int result = COM.CLSIDFromString(buffer, guid);
       if (result != COM.S_OK)
        OLE.error(result);
      }
      return guid;
     }

    }
    public class OleUtils
    {
     public static int getIdOfName(OleAutomation auto, String name)
     {
      int[] ret = auto.getIDsOfNames(new String[]{name});
      return ret[0];
     }
     
     public static void setProperty(OleAutomation auto, String name,Variant value)
     {
      int id = getIdOfName(auto, name);
      auto.setProperty(id, new Variant[]{value});
     }
     
     public static Variant getProperty(OleAutomation auto, String name)
     {
      int id = getIdOfName(auto, name);
      return auto.getProperty(id);
     }
     
     public static Variant invoke(OleAutomation auto, String name)
     {
      return invoke(auto,name,new Variant[0]);
     }
     
     public static Variant invoke(OleAutomation auto, String name,Variant... params)
     {
      int id = getIdOfName(auto, name);
      return auto.invoke(id,params);
     }
    }



    package test;

    import org.eclipse.swt.ole.win32.OleAutomation;
    import org.eclipse.swt.ole.win32.Variant;

    /**
     *
     * @author 楊中科
     *
     */
    public class HtmlElement
    {
     private OleAutomation auto;

     public HtmlElement(OleAutomation auto)
     {
      this.auto = auto;
     }

     protected OleAutomation getOleAutomation()
     {
      return auto;
     }

     public void setProperty(String name, Variant value)
     {
      OleUtils.setProperty(auto, name, value);
     }

     public Variant getPropertyAsVariant(String name)
     {
      Variant value = OleUtils.getProperty(auto, name);
      return value;
     }

     public void setProperty(String name, int value)
     {
      OleUtils.setProperty(auto, name, new Variant(value));
     }

     public int getPropertyAsInt(String name)
     {
      Variant value = OleUtils.getProperty(auto, name);
      return value.getInt();
     }

     public void setProperty(String name, boolean value)
     {
      OleUtils.setProperty(auto, name, new Variant(value));
     }

     public boolean getPropertyAsBool(String name)
     {
      Variant value = OleUtils.getProperty(auto, name);
      return value.getBoolean();
     }

     public void setProperty(String name, String value)
     {
      OleUtils.setProperty(auto, name, new Variant(value));
     }

     public String getPropertyAsString(String name)
     {
      Variant value = OleUtils.getProperty(auto, name);
      return value.getString();
     }

     public HtmlElement getPropertyAsHtmlElement(String name)
     {
      Variant value = OleUtils.getProperty(auto, name);
      return new HtmlElement(value.getAutomation());
     }

     public Variant invoke(String name,Variant... params)
     {
      return OleUtils.invoke(auto, name,params);
     }

     public int invoke_Int(String name,Variant... params)
     {
      return invoke(name,params).getInt();
     }

     public boolean invoke_Bool(String name,Variant... params)
     {
      return invoke(name,params).getBoolean();
     }

     public String invoke_String(String name,Variant... params)
     {
      return invoke(name,params).getString();
     }

     public HtmlElement invoke_HtmlElement(String name,Variant... params)
     {
      return new HtmlElement(invoke(name,params).getAutomation());
     }
    }




    package test;

    import org.eclipse.swt.ole.win32.OleAutomation;
    import org.eclipse.swt.ole.win32.OleClientSite;
    import org.eclipse.swt.ole.win32.Variant;

    /**
     * 更多方法參考MSDN“InternetExplorer Object”文檔
     *
     * @author 楊中科
     *
     */
    public class IEAutomation extends HtmlElement
    {

     public IEAutomation(OleClientSite clientSite)
     {
      super(new OleAutomation(clientSite));
     }

     public void setVisible(boolean value)
     {
      setProperty("Visible", value);
     }

     public boolean isVisible()
     {
      return getPropertyAsBool("Visible");
     }

     public void setMenuBar(boolean value)
     {
      setProperty("MenuBar", value);
     }

     public boolean isMenuBar()
     {
      return getPropertyAsBool("MenuBar");
     }

     public void setStatusBar(boolean value)
     {
      setProperty("StatusBar", value);
     }

     public boolean isStatusBar()
     {
      return getPropertyAsBool("StatusBar");
     }
     
     public void setToolBar(boolean value)
     {
      setProperty("ToolBar", value);
     }

     public boolean isToolBar()
     {
      return getPropertyAsBool("ToolBar");
     }
     
     public int getHWND()
     {
      return getPropertyAsInt("HWND");
     }
     
     public String getReadyState()
     {
      return getPropertyAsString("ReadyState");
     }
     
     public String getLocationURL()
     {
      return getPropertyAsString("LocationURL");
     }
     
     public boolean getBusy()
     {
      return getPropertyAsBool("Busy");
     }

     public void navigate(String url)
     {
      invoke("Navigate", new Variant(url));
     }

     public HtmlElement getDocument()
     {
      return getPropertyAsHtmlElement("Document");
     }

     public String getInnerHtml()
     {
      HtmlElement document = getPropertyAsHtmlElement("Document");
      HtmlElement body = document.getPropertyAsHtmlElement("body");
      return body.getPropertyAsString("innerHtml");
     }

     public HtmlElement getElementById(String id)
     {
      HtmlElement document = getDocument();
      return document.invoke_HtmlElement("getElementById", new Variant(id));
     }

     public void quit()
     {
      invoke("Quit");
     }
    }




    使用范例:

     protected void 自動填表()
     {
      //"kw"為關(guān)鍵字輸入框
      HtmlElement txtKW = ie.getElementById("kw");
      //自動填表
      txtKW.setProperty("value", "楊中科");
      HtmlElement btnSB = ie.getElementById("sb");
      //自動點(diǎn)擊【百度一下】按鈕自動提交查詢
      btnSB.invoke("click");
     }
     private void automation() throws Exception
     {
      OleFrame frame = new OleFrame(composite, SWT.NONE);
      AutomationClientSite client =
       new AutomationClientSite(frame,SWT.NONE,"InternetExplorer.Application");   
     
      ie = new IEAutomation(client);
      ie.setVisible(true);
      ie.setMenuBar(false);
      ie.setToolBar(false);
      ie.setStatusBar(false);
      
      int hwnd = ie.getHWND();
      OS.SetParent(hwnd, composite.handle);
      // 窗口最大化
      OS.SendMessage(hwnd, OS.WM_SYSCOMMAND, OS.SC_MAXIMIZE, 0);
      OS.SendMessage(hwnd, OS.WM_ACTIVATE, 0, 0);
      
      ie.navigate("http://www.baidu.com");
      //等待加載完畢,正確的方式應(yīng)該是在網(wǎng)頁onComplete的時候繼續(xù)執(zhí)行,但是沒弄明白OLE 的EventSink機(jī)制怎么搞到SWT中來
      //所以先湊合著Sleep循環(huán)檢測getBusy()的值,當(dāng)不busy的時候再進(jìn)行后續(xù)處理
      while(ie.getBusy())
      {
       Thread.sleep(10);
      }
      msgBox(ie.getInnerHtml());
      //"sb"為【百度一下】這個按鈕的id
      HtmlElement btnSB = ie.getElementById("sb");
      //取value屬性
      String txt = btnSB.getPropertyAsString("value");
      msgBox("按鈕上的文字:"+txt);
      msgBox("網(wǎng)址:"+ie.getLocationURL());
      
      composite.addDisposeListener(new DisposeListener() {
       public void widgetDisposed(DisposeEvent e)
       {
        //必須手動指定退出,否則會報異常
        ie.quit();
       }
      });
     }

    posted @ 2008-06-30 21:08 CowNew開源團(tuán)隊 閱讀(1409) | 評論 (2)編輯 收藏

    時間:2008年7月5日下午13:30到17:30
      活動地點(diǎn):北京清華大學(xué)(清華東門Fit樓)
      特邀咨詢師: EasyJF開源團(tuán)隊 大峽

      活動參加對象:vifir.com的vip用戶;
      參加費(fèi)用:VIP免費(fèi);

      主辦單:開源人網(wǎng)站(www.vifir.com)
      承辦單位:成都藍(lán)源信息技術(shù)有限公司 EasyJF開源團(tuán)隊 Cownew開源團(tuán)隊
      
      活動內(nèi)容:
      采用開展專題講座、問題答疑等形式,在網(wǎng)下開展面對面的關(guān)于前沿富客戶端技術(shù)的應(yīng)用及經(jīng)驗(yàn)交流活動,主要以Ext技術(shù)的學(xué)習(xí)及應(yīng)用經(jīng)驗(yàn)交流為主。還將會根據(jù)vifir推出的一些ext應(yīng)用示例,進(jìn)行比較深入的分析及探討。

      活動聯(lián)系人:靜水 (QQ: 970426526) 聯(lián)系電話:028-86272612
      電子郵箱:970426526 at qq.com

    posted @ 2008-06-30 21:01 CowNew開源團(tuán)隊 閱讀(270) | 評論 (0)編輯 收藏

         摘要: 在SWT中提供了訪問OLE的方式,不過相關(guān)的例子都是進(jìn)程內(nèi)OLE的例子,比如嵌入瀏覽器、引用ActiveX控件什么的。由于客戶的需求,我們需要在程序中通過進(jìn)程外Automation服務(wù)的方式訪問IE瀏覽器。經(jīng)過網(wǎng)上搜尋,找到一個朋友寫的CComObject類可以訪問Automation服務(wù)。不過經(jīng)過使用發(fā)現(xiàn)一些錯誤,因此對其進(jìn)行了修改,為了方便訪問IE,我又封裝了一個IEAutomation類,這...  閱讀全文
    posted @ 2008-06-23 17:04 CowNew開源團(tuán)隊 閱讀(2260) | 評論 (1)編輯 收藏

         摘要: 《專家手記AJAX開發(fā)實(shí)戰(zhàn)》電子版下載地址:http://www.tkk7.com/Files/huanzhugege/《專家手記AJAX開發(fā)實(shí)戰(zhàn)》電子版.rar
      閱讀全文
    posted @ 2008-06-22 18:19 CowNew開源團(tuán)隊 閱讀(2360) | 評論 (5)編輯 收藏

        在開發(fā)系統(tǒng)的時候經(jīng)常需要嵌入外部的程序,比如將企業(yè)原有的系統(tǒng)集成到我們的系統(tǒng)中,而且要求看起來像和我們的程序一樣嵌入到我們的系統(tǒng)中,這時就要借助于Win32了。在以前使用VC、Delphi、C#開發(fā)的使用的時候可以直接調(diào)用Win32的API來操作,好在SWT中提供了Win32API的封裝,而且封裝的比較好,大部分都在org.eclipse.swt.internal.win32.OS這個類中。核心原理就是調(diào)用SetParent這個API將我們的程序中的某個控件設(shè)置為被嵌套程序的父窗口。具體原理可以參考我以前寫的《WPF中嵌入普通Win32程序的方法 》(http://www.tkk7.com/huanzhugege/archive/2008/04/24/195516.html)。
    主要代碼如下:
     private void executeProg(String fileName) throws Exception
     {
      int hHeap = OS.GetProcessHeap ();
      TCHAR buffer = new TCHAR (0, fileName, true);
      int byteCount = buffer.length () * TCHAR.sizeof;
      int lpFile = OS.HeapAlloc (hHeap, OS.HEAP_ZERO_MEMORY, byteCount);
      OS.MoveMemory (lpFile, buffer, byteCount);
      SHELLEXECUTEINFO info = new SHELLEXECUTEINFO ();
      info.cbSize = SHELLEXECUTEINFO.sizeof;
      info.lpFile = lpFile;
      //隱藏啟動
      info.nShow = OS.SW_HIDE;
      boolean result = OS.ShellExecuteEx (info);
      if (lpFile != 0) OS.HeapFree (hHeap, 0, lpFile);
      if(result==false)
       throw new Exception("啟動失敗!");
     }
     
     protected void startNotePad() throws Exception {
      //"notepad.exe"為待啟動的程序名
      executeProg("notepad.exe");
      
      //等待NotePad.exe啟動并且初始化完畢,需要根據(jù)實(shí)際情況調(diào)整sleep的時間
      Thread.sleep(1000);  
      
      //"Notepad"為被嵌套程序窗口的ClassName(Win32級別),可以使用Spy++等工具查看
      int notepadHwnd = OS.FindWindow(new TCHAR(0,"Notepad",true),null);
      
      //&~WS_BORDER去掉內(nèi)嵌程序邊框,這樣看起來更像一個內(nèi)嵌的程序。如果需要顯示邊框,則將這兩行代碼刪除
      int oldStyle = OS.GetWindowLong(notepadHwnd, OS.GWL_STYLE);       
            OS.SetWindowLong(notepadHwnd, OS.GWL_STYLE, oldStyle&~OS.WS_BORDER);
           
            //composite為承載被啟動程序的控件
      OS.SetParent(notepadHwnd, composite.handle);  
      //窗口最大化
      OS.SendMessage(notepadHwnd, OS.WM_SYSCOMMAND, OS.SC_MAXIMIZE, 0);
     }

    全部代碼在此下載:http://www.tkk7.com/Files/huanzhugege/swtwin32.zip
    posted @ 2008-06-05 10:49 CowNew開源團(tuán)隊 閱讀(3752) | 評論 (2)編輯 收藏

    由CowNew開源團(tuán)隊的侯志松(網(wǎng)名:芽孢)編寫的《Hibernate完全手冊》已經(jīng)由機(jī)械工業(yè)出版社出版。
            本書從應(yīng)用程序開發(fā)的角度出發(fā),在介紹關(guān)系數(shù)據(jù)庫系統(tǒng)知識和面向?qū)ο蠓椒ǖ幕A(chǔ)上,全面介紹對象關(guān)系映射領(lǐng)域的工業(yè)標(biāo)準(zhǔn)――Hibernate的基本功能、體系架構(gòu)、使用方法及高級特性。全書以對象關(guān)系映射為主線,分成3個模塊:第1~6章介紹對象持久化的基礎(chǔ)以及Hibernate的基本配置和使用方法;第7~11章詳細(xì)介紹如何使用Hibernate實(shí)現(xiàn)對象關(guān)系的映射,并討論了使用面向?qū)ο蠓绞讲樵償?shù)據(jù)的方法和技巧;第12~16章分析了Hibernate中事務(wù)、并發(fā)、緩存等高級特性,并討論了如何整合Hibernate和成熟技術(shù),構(gòu)建企業(yè)級應(yīng)用程序開發(fā)框架的技術(shù)實(shí)踐。
    posted @ 2008-06-04 10:16 CowNew開源團(tuán)隊 閱讀(446) | 評論 (0)編輯 收藏

    隨著Web開發(fā)的不斷進(jìn)步,AJAX以一種新的面貌出現(xiàn)在了我們面前,并且迅速席卷全球,成為一種炙手可熱的技術(shù)。越來越多的開發(fā)人員想快速的掌握這門技術(shù),并把它快速應(yīng)用到自己的項(xiàng)目中。

    雖然構(gòu)成AJAX的技術(shù)已經(jīng)非常成熟了,但是都是以CSS、JavaScript、XML等單一形式出現(xiàn)的,所以相關(guān)的技術(shù)書籍都僅僅停留在孤立的介紹這些技術(shù)方面,讀者無法將這些技術(shù)有機(jī)的整合起來,更無從談起將AJAX應(yīng)用到項(xiàng)目中。本書將嘗試著打破這種局面,在書中我們對AJAX的基礎(chǔ)知識做有重點(diǎn)的介紹,而且本書中將穿插各種小的案例,讓讀者能夠在實(shí)踐中快速學(xué)習(xí)到AJAX技術(shù),并且在最后我們安排了一個實(shí)用性非常強(qiáng)的WebOS應(yīng)用,讓讀者能夠?qū)W了就能懂、懂了立即用。

    在AJAX領(lǐng)域已經(jīng)有一些非常好的圖書出版,不過這些圖書大都是用PHP、.Net等語言描述的,以Java實(shí)現(xiàn)的并不是很多,即使有也是淺嘗輒止。不過《專家手記AJAX開發(fā)實(shí)戰(zhàn) 》的出現(xiàn)改變了這一面貌。

    這本書不僅用了大量篇幅介紹了流行的AJAX框架,更加可貴的是,書中用了三個章節(jié)以一個實(shí)用的WebOS為案例講解了基于AJAX技術(shù)的Web系統(tǒng)的開發(fā)開發(fā)出了模擬Windows桌面、網(wǎng)絡(luò)相冊、愛墻、在線Office、網(wǎng)絡(luò)硬盤等經(jīng)典的Web2.0應(yīng)用,充分展示了AJAX技術(shù)的強(qiáng)大。WebOS是AJAX技術(shù)登峰造極制作,跟著作者實(shí)打?qū)嵉膶W(xué)到了一個WebOS的制作,你就是AJAX高手!!!

    值得一提的是《專家手記AJAX開發(fā)實(shí)戰(zhàn) 》這本書的代碼質(zhì)量非常高,看了作者的代碼不僅能使您學(xué)到高手的代碼編寫習(xí)慣,更能使您掌握AJAX的高級開發(fā)技能。
        此書是CowNew開源團(tuán)隊第一本團(tuán)隊合作形式出版的圖書!
        稍后會提供試讀電子版給各位。

           由CowNew開源團(tuán)隊的侯志松(網(wǎng)名:芽孢)編寫的《Hibernate完全手冊》也已經(jīng)由機(jī)械工業(yè)出版社出版。本書從應(yīng)用程序開發(fā)的角度出發(fā),在介紹關(guān)系數(shù)據(jù)庫系統(tǒng)知識和面向?qū)ο蠓椒ǖ幕A(chǔ)上,全面介紹對象關(guān)系映射領(lǐng)域的工業(yè)標(biāo)準(zhǔn)――Hibernate的基本功能、體系架構(gòu)、使用方法及高級特性。全書以對象關(guān)系映射為主線,分成3個模塊:第1~6章介紹對象持久化的基礎(chǔ)以及Hibernate的基本配置和使用方法;第7~11章詳細(xì)介紹如何使用Hibernate實(shí)現(xiàn)對象關(guān)系的映射,并討論了使用面向?qū)ο蠓绞讲樵償?shù)據(jù)的方法和技巧;第12~16章分析了Hibernate中事務(wù)、并發(fā)、緩存等高級特性,并討論了如何整合Hibernate和成熟技術(shù),構(gòu)建企業(yè)級應(yīng)用程序開發(fā)框架的技術(shù)實(shí)踐。
    posted @ 2008-06-03 16:59 CowNew開源團(tuán)隊 閱讀(1999) | 評論 (5)編輯 收藏

    向四川汶川大地震遇難同胞表示深切哀悼! 

      舉國哀悼,也許,我們會淚流滿面,也許,我們會放聲痛哭,但任何困難都難不倒中國人民,我們終會擦干淚水,挺起脊梁,繼續(xù)前進(jìn)。

    posted @ 2008-05-19 21:05 CowNew開源團(tuán)隊 閱讀(237) | 評論 (0)編輯 收藏

            今天終于把《魯賓遜歷險記》第一部看完了,看到其中說到“既然上帝都能饒恕他,我們有什么權(quán)利剝奪他的生命呢?”,我這才明白為什么電影里邊基督徒要?dú)⒁粋€人的時候要說“我以上帝的名義,殺了你”,既然能夠有權(quán)剝奪你生命的人只有上帝,那么我要?dú)⒘四憔捅仨?#8220;以上帝的名義”了,也就是說這是上帝他老人家的意思。這也就是說,做一件事情必須有“名分”。看以前很多革命電影中,我們的革命戰(zhàn)士要槍斃叛徒的時候要說“我代表人民代表D槍斃了你”,應(yīng)該這是一個意思吧。
            朱棣要當(dāng)BOSS就要打著“清君側(cè)”的旗號、洪秀全要造反就必須說自己是上帝的次子、小鬼子要發(fā)動七七事變就要找理由攻占宛平城、老美要弄死薩達(dá)姆就必須以找核武器為理由……看來無論是國內(nèi)還是國外、無論是做好事還是做壞事名分都是很重要的,必須找個名分才能行動,如果哪天一個人做事不講“名分”的話估計也就是流氓透頂了吧。
    posted @ 2008-05-03 23:24 CowNew開源團(tuán)隊 閱讀(407) | 評論 (5)編輯 收藏

    ssy(*^__^*) 16:57:16
    不知你做過js的語法分析沒有,我正在用antlr做js的語法分析,遇到兩個難題,想向您請教:
    1.正則和除法的區(qū)分
    2.js匿名類和組合語句的區(qū)分
    楊中科 17:08:22
    sorry,沒做過js的語法分析  
    ssy(*^__^*) 17:10:37
    哦,謝謝你
    楊中科 17:11:39
    為什么不用mozilla的js包呢?它那里邊好像提供了解析js的類,直接能拿到AST  
    ssy(*^__^*) 17:12:30
    好的,謝謝您提醒,我去試一下mozilla的js包
    楊中科 17:13:04
    你們解析JS做什么用途?  
    ssy(*^__^*) 17:13:46
    做安全代碼分析,就是找出js代碼可能存在的安全隱患
    楊中科 17:14:14
    哦。JS包中的Parser類可以干這個  
    ssy(*^__^*) 17:14:55
    嗯,我去找一下這方面的資料,還沒用過js包呢,呵呵,謝謝你提示
    posted @ 2008-04-25 21:13 CowNew開源團(tuán)隊 閱讀(892) | 評論 (2)編輯 收藏

    僅列出標(biāo)題
    共30頁: First 上一頁 3 4 5 6 7 8 9 10 11 下一頁 Last 
    主站蜘蛛池模板: 日韩a级毛片免费观看| 亚洲综合色自拍一区| 牛牛在线精品免费视频观看| 国产亚洲午夜高清国产拍精品| 一级毛片在线免费观看| 亚洲国产乱码最新视频| 狠狠亚洲狠狠欧洲2019| 两性刺激生活片免费视频| 老司机福利在线免费观看| 91情国产l精品国产亚洲区 | 日本在线看片免费人成视频1000 | 永久黄网站色视频免费观看| 青青久久精品国产免费看| 色婷婷亚洲十月十月色天| 日本人的色道www免费一区| 免费国产成人午夜在线观看| 国产成A人亚洲精V品无码性色| 一二三四在线播放免费观看中文版视频 | 亚洲精品久久无码av片俺去也 | 777成影片免费观看| 免费手机在线看片| 亚洲国产精品久久丫| 久久国产成人亚洲精品影院| 我想看一级毛片免费的| 精品亚洲永久免费精品| 日韩在线观看免费| 亚洲精品456人成在线| 亚洲国产老鸭窝一区二区三区| 一级毛片免费观看不卡视频| 亚洲欧美在线x视频| 亚洲a级在线观看| 国产极品美女高潮抽搐免费网站| 男女作爱在线播放免费网站| 欧洲乱码伦视频免费国产| 亚洲日韩一区精品射精| 亚洲一本大道无码av天堂| 日美韩电影免费看| 免费看国产精品3a黄的视频| 99re免费视频| 久久精品中文字幕免费| 日批视频网址免费观看|