青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

面對現實,超越自己
逆水行舟,不進則退
posts - 269,comments - 32,trackbacks - 0

安裝程序的使用

生成的安裝程序和卸載程序接受一些命令行的參數。這些參數可以讓用戶在安裝過程中對安裝程序作部分控制。

公共選項

  • /NCRC 禁止 CRC 檢測,除非在腳本里強制使用了 CRCCheck force
  • /S 靜默運行安裝程序或卸載程序。更多信息請參看 section 4.12
  • /D 指定默認的安裝目錄 ($INSTDIR), 可以越過 InstallDirInstallDirRegKey 。這個參數必須是最后一個參數并且不能帶任何引號即使路徑帶有空格。僅支持絕對路徑。

卸載程序特殊選項

  • _?= 指定 $INSTDIR。這也會阻止卸載程序把它自己復制到臨時文件夾再運行。這將可以使用 ExecWait 來運行卸載程序并等待它完成。這個參數必須是最后一個參數并且不能帶任何引號即使路徑帶有空格。

例子

1 installer.exe /NCRC
2 installer.exe /S
3 installer.exe /D=C:\Program Files\NSIS
4 installer.exe /NCRC //D=C:\Program Files\NSIS
5 uninstaller.exe /S _?=C:\Program Files\NSIS
# 靜默卸載舊版本并等待它完成后才繼續(xù)
1 ExecWait '"$INSTDIR\uninstaller.exe" /S _?=$INSTDIR'


以上信息來自NSIS幫助。下面為實例代碼:

 1 !define APPLOCALPATH "Test.exe"
 2 !define APPPATH "$TEMP\${APPLOCALPATH}"
 3 
 4 OutFile "Test ${__DATE__}.exe"
 5 
 6 Section "Silent MakeNSIS"
 7         SetOutPath "$TEMP"
 8         File /r  "install\*.*"
 9         ExecWait '$TEMP\${APPLOCALPATH} /S /D=F:\Program Files\NSIS'
10         Delete '$TEMP\${APPLOCALPATH}'
11 SectionEnd


 

posted @ 2012-05-25 09:30 王海光 閱讀(8785) | 評論 (0)編輯 收藏
本文轉自:http://www.shnenglu.com/humanchao/default.html?page=2

已知前序和中序:

struct NODE 
{
    NODE 
*pLeft;
    NODE 
*pRight;
    
char chValue;
};

int  CharInStrFirstPos(char ch, char *str, int nLen)
{
    
char *pOrgStr = str;
    
while (nLen > 0 && ch != *str)
    {
        str
++;
        nLen
--;
    }
    
    
return (nLen > 0? (str - pOrgStr) : -1;
}

void ReBuild_PreIn(char *pPreOrder, char *pInOrder, int nTreeLen, NODE **pRoot)
{
    
if (pPreOrder == NULL || pInOrder == NULL)
    {
        
return;
    }

    NODE 
*pTemp = new NODE;
    pTemp
->chValue = *pPreOrder;
    pTemp
->pLeft = NULL;
    pTemp
->pRight = NULL;

    
if (*pRoot == NULL)
    {
        
*pRoot = pTemp;
    }

    
if (nTreeLen == 1)
    {
        
return;
    }

    
int nLeftLen = CharInStrFirstPos(*pPreOrder, pInOrder, nTreeLen);
    assert(nLeftLen 
!= -1);
    
int nRightLen = nTreeLen - nLeftLen -1;

    
if (nLeftLen > 0)
    {
        ReBuild_PreIn(pPreOrder 
+ 1, pInOrder, nLeftLen, &((*pRoot)->pLeft));
    }

    
if (nRightLen > 0)
    {
        ReBuild_PreIn(pPreOrder 
+ nLeftLen + 1, pInOrder + nLeftLen + 1,
            nRightLen, 
&((*pRoot)->pRight));
    }
}

已知后序和中序:


void ReBuild_AftIn(char *pAftOrder, char *pInOrder, int nTreeLen, NODE **pRoot)
{
    
if (pAftOrder == NULL || pInOrder == NULL)
    {
        
return;
    }
    
    NODE 
*pTemp = new NODE;
    pTemp
->chValue = *pAftOrder;
    pTemp
->pLeft   = NULL;
    pTemp
->pRight  = NULL;
    
    
if (*pRoot == NULL)
    {
        
*pRoot = pTemp;
    }
    
    
if (nTreeLen == 1)
    {
        
return;
    }
    
    
int nLeftLen = CharInStrFirstPos(*pAftOrder, pInOrder, nTreeLen);
    assert(nLeftLen 
!= -1);
    
int nRightLen = nTreeLen - nLeftLen -1;
    
    
if (nLeftLen > 0)
    {
        ReBuild_AftIn(pAftOrder 
+ nRightLen + 1, pInOrder, nLeftLen, &((*pRoot)->pLeft));
    }
    
    
if (nRightLen > 0)
    {
        ReBuild_AftIn(pAftOrder 
+ 1, pInOrder + nLeftLen + 1,
            nRightLen, 
&((*pRoot)->pRight));
    }
}

我上傳了一個工VC的工程,有興點此下載趣的朋友。代碼參考于《編程之美》。
posted @ 2012-05-24 13:57 王海光 閱讀(907) | 評論 (1)編輯 收藏
本文轉自:http://www.cnblogs.com/jillzhang/archive/2007/09/16/894936.html


遞歸算法學習系列二(歸并排序)

      歸并排序是利用遞歸和分而治之的技術將數據序列劃分成為越來越小的半子表,再對半子表排序,最后再用遞歸步驟將排好序的半子表合并成為越來越大的有序序列,歸并排序包括兩個步驟,分別為:

      1)劃分子表

      2)合并半子表 

     首先我們來討論歸并算法,歸并算法將一系列數據放到一個向量中,索引范圍為[first,last],這個序列由兩個排好序的子表構成,以索引終點(mid)為分界線,以下面一個序列為例

    7,10,19,25,12,17,21,30,48

   這樣的一個序列中,分為兩個子序列 7,10,19,25  和 12,17,21,30,48,如下圖所示:

   image 

再使用歸并算法的時候的步驟如下:

 第一步:比較v[indexA]=7和v[indexB]=12,將較小的v[indexA]取出來放到臨時向量tempArray中,然后indexA加1

  image

 

 第二步:比較v[indexA]=10和v[indexB]=12,將較小的10放到臨時變量tempArray中,然后indexA++;

  image

第三步:比較v[indexA]=19與v[indexB]=12,將較小的12存放到臨時變量tempArray中,然后indexB++;

   image

第四步到第七步:按照以上規(guī)則,進行比對和存儲,得到如下結果:

   image

最后一步:將子表b中剩余項添加到臨時向量tempArray中

   image 

然后將臨時變量中的值按照索引位置,拷貝回向量v中,就完成了對向量v的歸并排序

算法函數為:

 1 public void Merger(int[] v, int first, int mid, int last)
 2        {
 3            Queue<int> tempV = new Queue<int>();
 4            int indexA, indexB;
 5            //設置indexA,并掃描subArray1 [first,mid]
 6            //設置indexB,并掃描subArray2 [mid,last]
 7            indexA = first;
 8            indexB = mid;
 9            //在沒有比較完兩個子標的情況下,比較 v[indexA]和v[indexB]
10            //將其中小的放到臨時變量tempV中
11            while (indexA < mid && indexB < last)
12            {
13                if (v[indexA] < v[indexB])
14                {
15                    tempV.Enqueue(v[indexA]);
16                    indexA++;
17                }
18                else
19                {
20                    tempV.Enqueue(v[indexB]);
21                    indexB++;
22                }
23            }
24            //復制沒有比較完子表中的元素
25            while (indexA < mid)
26            {
27                tempV.Enqueue(v[indexA]);
28                indexA++;
29            }
30            while (indexB < last)
31            {
32                tempV.Enqueue(v[indexB]);
33                indexB++;
34            }
35            int index = 0;
36            while (tempV.Count > 0)
37            {
38                v[first+index] = tempV.Dequeue();
39                index++;
40            }
41        } 

    實現歸并排序;歸并排序算法分為兩步,第一步:先將原來的數據表分成排好序的子表,然后調用 Merger  對子表進行歸并,使之成為有序表,例如有如下向量:

  25,10,7,19,3,48,12,17,56,30,21

對此序列進行歸并排序的步驟為:

   image

    歸并算法函數為

 1 public void MergerSort(int[] v, int first, int last)
 2        {
 3            if (first + 1 < last)
 4            {
 5                int mid = (first + last) / 2;
 6                MergerSort(v, first, mid);
 7                MergerSort(v, mid, last);
 8                Merger(v, first, mid, last);
 9            }
10        } 

    歸并算法的劃分子表和歸并子表與原數據序列次序無關,因此算法的最壞情況,最壞情況和平均情況時間復雜度是一樣的

下面是歸并算法的函數調用圖

       image

示例程序: MergerSort.rar

posted @ 2012-05-23 14:01 王海光 閱讀(552) | 評論 (0)編輯 收藏
通過API函數::GetPrinter()來獲取打印機的相關信息。
 1 HANDLE hPrinter; 
 2 DWORD dwNeeded=0
 3 PRINTER_INFO_2* pPrinterInfo = NULL;
 4 PPRINTER_NOTIFY_INFO pNotify = NULL;
 5 ::OpenPrinter((LPTSTR)(LPCTSTR)"打印機名稱"&hPrinter, NULL);
 6 ::GetPrinter(hPrinter,2,0,0,&dwNeeded);
 7 if (dwNeeded <= 0)
 8 {
 9     LOG("獲取打印機信息長度dwNeeded=%d失敗,添加打印機消息處理失敗", dwNeeded);
10     return 0;
11 }
12 pPrinterInfo = new PRINTER_INFO_2[dwNeeded]; 
13 if(!::GetPrinter(hPrinter,2,(LPBYTE)pPrinterInfo,dwNeeded,&dwNeeded))
14 
15     DWORD dError = GetLastError();
16     LOG("獲取打印信息失敗,錯誤代碼:%d,添加打印機消息處理失敗", dError);
17     return 0;
18                          
19 
20 ::ClosePrinter(hPrinter); 
21 delete []pPrinterInfo; 

posted @ 2012-05-23 11:00 王海光 閱讀(1099) | 評論 (0)編輯 收藏
本文轉自:http://www.shnenglu.com/fztcjjl/archive/2012/05/02/173434.html

Linux開發(fā)工具視頻

工欲善其事必先利其器,《Linux開發(fā)工具使用》視頻講解Linux底下C/C++開發(fā)工具的使用。主要包括編譯工具gcc、調試工具gdb、make(Makefile)工具以及當前流行的自動化編譯工具cmake工具。

gcc入門(上)
本節(jié)課的主要內容有:
什么是gcc
gcc特點
gcc編譯過程
gcc常用選項
gcc編譯多文件
在線播放地址:http://www.cppcourse.com/gcc1.html
gcc入門(下)
本節(jié)課的主要內容有:
使用外部庫
靜態(tài)庫與共享庫
生成靜態(tài)庫
生成動態(tài)庫
在線播放地址:http://www.cppcourse.com/gcc2.html
Makefile(上)
本節(jié)課的主要內容有:
make與Makefile介紹
Makefile基本規(guī)則
簡單的Makefile編寫
Make自動化變量
Makefile編譯多個可執(zhí)行文件
在線播放地址:http://www.cppcourse.com/makefile1.html
Makefile(下)
本節(jié)課的主要內容有:
make常用內嵌函數
多級目錄Makefile
實用的Makefile
在線播放地址:http://www.cppcourse.com/makefile2.html
gdb入門(上)
本章的主要內容有:
什么是gdb
gdb功能
運行程序
查看源碼
設置斷點
單步調試
gdb常用命令總結
在線播放地址:http://www.cppcourse.com/gdb1.html
gdb入門(下)
本章的主要內容有:
查看運行時數據
程序錯誤
gdb調試邏輯錯誤
gdb調試段錯誤
core文件調試
在線播放地址:http://www.cppcourse.com/gdb2.html
posted @ 2012-05-22 11:29 王海光 閱讀(402) | 評論 (0)編輯 收藏
     摘要: 用GetPrivateProfileString和WritePrivateProfileString函數讀寫文件操作。以及轉載的一篇關于文件操作的文章  閱讀全文
posted @ 2012-05-17 16:46 王海光 閱讀(7200) | 評論 (0)編輯 收藏
本文轉自:http://topic.csdn.net/u/20120329/15/ee6b04a0-a797-4f59-b538-5d8be71db9a4.html

大家都知道,當編寫一個win32 console application時,當運行此類程序的時候默認情況下會有一個類似dos窗口的console窗口,但是有的時候我們只想在程序中運行一段功能代碼,不希望顯示這個console窗口,讓代碼執(zhí)行完畢之后程序自動退出.下面就介紹一下,如何隱藏win32 console application的console窗口 .

因為此種方法是通過設置編譯器的鏈接開關來實現,所以讓我們來看一下編譯器的鏈接開關選項(也就是linker選項).

首先我們來看一下linker的 /subsystem 選項該選項的語法形式如下:
/subsystem:{console|efi_application|efi_boot_service_driver|
efi_rom|efi_runtime_driver|native|posix|windows|windowsce}
[,major[.minor]]

這個鏈接選項告訴操作系統如何運行可執(zhí)行文件

console: win32 字符模式應用程序,此種類型的應用程序在運行的時候會產生一個類似dos窗口的控制臺窗口,如果在應用程序的主函數為main()或者wmain(),在默認情況下該應用程序就是一個控制臺應用程序.

extensible firmware interface 和cpu具體架構相關的一個參數選項,并不常用,在這里暫不詳細介紹.
如果對此有興趣的可以訪問intel主頁來查看相關內容

native;設備驅動器選項,如果/driver:wdm選項被設定的話,該鏈接選項(native)就為默認選項

posix: 在windows nt 種運行在posix子系統上的應用程序

windows:該類型的應用程序不產生console窗口,該類型的應用程序的窗口由用戶自己創(chuàng)建,簡而言之
就是一個標準的win32 application,其入口地址為winmain()函數或者wwinmain()函數的地址
如果你在應用程序種定義的主函數為winmain或者wwinmain,在默認情況下該應用程序就是一個
win32 application !

windowsce:運行在windows ce上的應用程序

major and minor (optional):主版本號和次版本號,該選項為可選,該選項為0~65535之間的十進制整數

從上面可以看出如果我們建立一個win32 console application的話,linker的/subsystem選項應該為
console,可以在vc開發(fā)環(huán)境的project->setting->link->project option中看到!

接下來我們再看看應用程序是如何運行的!

我們知道用vc編寫的程序,運行的時候是需要 cc 運行庫支持的.當我們運行一個c/c 程序的時候鏈接器會首先尋找應用程序的啟動函數,例如:

如果你建立了一個console程序的話,編譯器得鏈接開關會是以下這種形式
/subsystem:console /entry:maincrtstartup (ansi)
/subsystem:console /entry:wmaincrtstartuup (unicode)

如果你建立了一個win32 application,編譯器得鏈接開關則會是一下形式
/subsystem:windows /entry:winmain (ansi)
/sbusystem:windows /entry:wwinmain (uincode)

上面的兩種形式可以再project->setting->link->project option中看到,上面的subsystem和entry并不需要都設置,如果你只設置了/subsystem:console的話,那么默認的entry開關在默認情況下應為/entry:maincrtstartup.反之,如果你在應用程序中定義了main函數的話,默認情況下,你/subsystem開關應該為/system:console.

在默認情況下/subsystem 和/entry開關是匹配的,也就是console對應maincrtstartup或者wmaincrtstartup.windows對應winmain或者wwinmain.但是我們也可以通過手動改動的方式使他們不匹配.例如我們可以這樣改動

#pragma comment( linker, /subsystem:windows /entry:maincrtstartup ) // 設置入口地址
int main(int argc, char* argv[])
{
messagebox(null, hello, notice, mb_ok);
return 0;
}

在默認情況下鏈接器看到/subsystem下是windows選項的時候,它會自動尋找winmain或者wwinmain
但我們強制指定入口地址,這樣運行程序的時候默認的console窗口就會隱藏!

上面是在代碼中使用#pragma指令來設置,還有一種就是直接在開發(fā)環(huán)境的
project->setting->link->project option中手工改動!

總結如下:
1:如果console程序已經寫好了,不能改了,也可以。寫一個API程序,不要畫窗口,然后用CreateProcess調用寫好的console程序,把屬性設成SW_HIDE即可。
2:不能用控制臺來寫(CONSLOE),要用WINMAIN做入口就可以了,不畫窗口,別人就都看不見了. 你只用想想辦法把你的進程在任務欄里面隱藏住就可以.
3:如果是console程序,用API函數GetStdHandle()獲得控制臺程序的窗口句柄,然后在隱藏窗口
4://這一句隱藏控制臺
#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )
你要寫控制臺程序就用這個.在控制臺程序中隱藏控制臺窗口!
posted @ 2012-05-17 16:10 王海光 閱讀(545) | 評論 (0)編輯 收藏
查找指定進程:
 1 BOOL Test::FindProcess(const CString &sProcessName)
 2 {
 3     BOOL bResult = FALSE;
 4     HANDLE handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);//
 5     //PROCESSENTRY32 *info = new PROCESSENTRY32; 
 6     //info->dwSize=sizeof(PROCESSENTRY32); 
 7 
 8     PROCESSENTRY32 info; 
 9     info.dwSize = sizeof(PROCESSENTRY32); 
10     Process32First(handle, &info); 
11     while (Process32Next(handle, &info) != FALSE) 
12     {   
13         if (sProcessName.CompareNoCase(info.szExeFile) == 0)   
14         {   
15             bResult = TRUE;
16             break;
17         }   
18     } 
19     CloseHandle(handle);
20 
21     return bResult;
22 }

posted @ 2012-05-10 14:20 王海光 閱讀(1093) | 評論 (0)編輯 收藏
     在MFC中,向線程傳遞CString變量參數時,很容易犯一個錯誤,就是使用一個超出生存期的變量,在主函數中定義的CString變量是局部變量,當主函數結束時,這個CString變量就會被析構,而卻在另一個線程中繼續(xù)使用,參數傳遞就會出現問題。
     解決此問題,可以在主函數中new一個CString,在線程結束時在delete一下釋放內存。或者聲明一個全局變量,保證CString變量不會超出生存期,這樣傳遞進線程的參數就可以正常使用了。
     下面為示例代碼: 
 1 DWORD WINAPI test::ProcessNotifyThread(LPVOID pParam)
 2 {
 3 
 4     CString* sTest = (CString*)pParam;
 5     //AfxMessageBox(*sTest);
 6     delete sTest;
 7     return 0 ;
 8 }
 9 
10 void test::OnBnClickedButton1()
11 {
12     // TODO: Add your control notification handler code here
13      CString *sTest = new CString;
14      *sTest = "hello";
15      LPVOID lpvoid=sTest;
16 
17     CWinThread* pThread = AfxBeginThread((AFX_THREADPROC)test::ProcessNotifyThread, lpvoid);
18 }
     CString類是很好用,但在多線程時最好不要用CString,因為MSDN明確說了,CString類是非線程安全的。
     下面為摘抄的:

     CString只保證類級的線程安全, 
     要做到對象級別的線程安全,需要你自己進行同步, 也就是說, 可以同時有N個線程在讀, 但是寫的時候,必須保證沒有任何線程"正在"讀和寫 才可以寫入.

1 CString str; 
2 
3 CCriticalSection cs; 
4 cs->Lock( ); 
5 str+="abcdefg";.. 
6 do anything you want 
7 cs->Unlock( );


線程傳遞char*

 1 DWORD WINAPI test::ProcessNotifyThread(LPVOID pParam)
 2 {
 3 
 4     char *pSectionName = (char *)lpvoid;
 5     CString sSectionName;
 6     sSectionName.Format("%s", pSectionName);     return 0 ;
 7  }
 8  
 9  void test::OnBnClickedButton1()
10  {
11      // TODO: Add your control notification handler code here
12       CString str = _T("aaaa");
13       const char *pSectionName = (LPCTSTR)str;     
14       CWinThread* pThread = AfxBeginThread((AFX_THREADPROC)test::ProcessNotifyThread, (LPVOID)pSectionName);
15  }

 

posted @ 2012-05-10 10:20 王海光 閱讀(2610) | 評論 (0)編輯 收藏
    在Windows 2000下調試程序時,碰到一個問題:在導入一個win32 DLL時,LoadLibrary()函數返回值為空,GetLastError返回值為127 (找不到指定的程序)。其他DLL文件調用都正常。最后發(fā)現這個DLL文件中一個API函數WTSGetActiveConsoleSessionId()不支持2000系統,所以導致DLL文件總是導入不成功。
    加載dll失敗,原因大致有:
    1.dll初始化時失敗,這是因為dll本身有問題;
    2.dll需要的其他dll文件不存在;
    3.調用的dll再本地機器上不存在。
    
    解決方案: 用動態(tài)加載的方式
   
 1 typedef DWORD (WINAPI *LoadWTSGetActiveConsoleSessionId)(VOID);
 2 
 3             HMODULE hModKrl  =  LoadLibrary(TEXT("Kernel32.dll"));
 4             if (!hModKrl)  
 5             {  
 6                 LOG("導入 kernel32.dll 失敗");
 7                 return;
 8             }  
 9 
10             LoadWTSGetActiveConsoleSessionId fWTSGetActiveConsoleSessionId  =  (LoadWTSGetActiveConsoleSessionId)GetProcAddress(hModKrl, "WTSGetActiveConsoleSessionId");
11             if (!fWTSGetActiveConsoleSessionId)
12             {
13                 LOG("調用WTSGetActiveConsoleSessionId 失敗");
14                 return;
15             } 
16             dwSessionId = fWTSGetActiveConsoleSessionId();
17 
18             if (hModKrl)  
19             {  
20                 FreeLibrary(hModKrl);  
21             }
    使用動態(tài)加載dll,在Windows2000系統下成功,但獲取WTSGetActiveConsoleSessionId函數入口地址失敗。查找msdn發(fā)現此函數不支持2000系統。

   Requirements     

Minimum supported client

Windows XP

   Minimum supported server

Windows Server 2003

   Header

Winbase.h (include Windows.h)

   Library

Kernel32.lib

   DLL

Kernel32.dll
      

posted @ 2012-05-09 14:59 王海光 閱讀(10724) | 評論 (0)編輯 收藏
僅列出標題
共27頁: First 19 20 21 22 23 24 25 26 27 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲国语精品自产拍在线观看| 怡红院av一区二区三区| 国产精品欧美一区二区三区奶水| 国产日韩欧美自拍| 亚洲尤物在线| 日韩亚洲国产精品| 欧美黄色精品| 最新精品在线| 亚洲国产激情| 久久国产日韩欧美| 国产欧美一区二区三区另类精品| 亚洲女女女同性video| 日韩亚洲成人av在线| 欧美日韩mv| 亚洲色图在线视频| 夜夜嗨av色一区二区不卡| 欧美日本国产| 亚洲一区三区电影在线观看| 夜夜嗨av一区二区三区四季av | 国产精品亚洲精品| 午夜日韩福利| 欧美亚洲日本国产| 激情成人亚洲| 亚洲大片精品永久免费| 欧美国产另类| 亚洲天堂av图片| 欧美91大片| 国产精品久久午夜| 亚洲一级黄色av| 亚洲天堂男人| 国产日韩欧美91| 欧美aⅴ一区二区三区视频| 老色鬼久久亚洲一区二区| 亚洲精品免费在线观看| 一区二区高清视频在线观看| 国产视频久久久久| 欧美xx视频| 国产精品盗摄一区二区三区| 久久久久成人精品| 欧美高清在线一区| 午夜视频在线观看一区二区| 久久九九国产精品怡红院| 亚洲伦伦在线| 欧美一区二区日韩| 日韩写真在线| 久久爱www久久做| 99精品热6080yy久久 | 国产偷自视频区视频一区二区| 久久蜜桃香蕉精品一区二区三区| 免播放器亚洲一区| 欧美一级视频| 欧美精品v日韩精品v国产精品| 欧美一区二区三区视频免费播放| 久久久美女艺术照精彩视频福利播放| 亚洲精品日韩在线| 欧美一级午夜免费电影| 亚洲视频在线观看视频| 久久综合一区二区三区| 久久不射2019中文字幕| 欧美乱妇高清无乱码| 久久综合九色综合网站| 国产精品剧情在线亚洲| 亚洲激情精品| 在线观看欧美日韩国产| 亚洲欧美www| 一区二区三区|亚洲午夜| 久久婷婷麻豆| 久久精品国产亚洲a| 欧美午夜电影在线| 亚洲国产一二三| 1000部精品久久久久久久久| 亚洲一区在线观看免费观看电影高清| 亚洲人成毛片在线播放女女| 久久国产福利国产秒拍| 欧美亚洲专区| 国产精品美女主播在线观看纯欲| 亚洲精品一二三区| 亚洲精品免费网站| 老司机成人网| 猛男gaygay欧美视频| 国产一区二区| 欧美一区二区精品久久911| 午夜在线精品偷拍| 国产精品你懂的在线| 中日韩高清电影网| 亚洲一区二区免费视频| 欧美日韩中文精品| 99re这里只有精品6| 在线一区二区日韩| 欧美日本韩国一区二区三区| 亚洲国产精品成人综合| 亚洲国产综合视频在线观看| 亚洲一卡二卡三卡四卡五卡| 欧美激情四色 | 久久乐国产精品| 国产日韩一区二区三区| 亚洲欧美清纯在线制服| 欧美呦呦网站| 国产一区二区日韩精品欧美精品| 亚洲欧美日韩第一区| 欧美中在线观看| 韩国在线视频一区| 久久网站免费| 亚洲激情中文1区| 在线亚洲伦理| 国产日韩在线视频| 久久视频在线视频| 亚洲人午夜精品| 亚洲综合国产激情另类一区| 国产精品日日摸夜夜摸av| 欧美影院久久久| 欧美激情精品久久久久久免费印度| 亚洲黄色一区| 国产精品成人观看视频国产奇米| 午夜激情亚洲| 欧美大片在线观看一区二区| 99精品热6080yy久久| 国产精品女人久久久久久| 久久精品视频在线播放| 亚洲激情自拍| 久久激情综合网| 亚洲经典三级| 国产精品女人网站| 欧美 日韩 国产在线| 中日韩在线视频| 欧美 日韩 国产精品免费观看| 99精品欧美一区| 国产亚洲精品久久久久久| 欧美大片第1页| 亚洲欧美日本精品| 亚洲国产精品成人综合色在线婷婷| 亚洲综合精品自拍| 136国产福利精品导航| 国产精品成av人在线视午夜片 | 亚洲精品黄色| 国产欧美日韩| 欧美日韩网址| 久久综合网hezyo| 亚洲综合色婷婷| 亚洲激情另类| 美腿丝袜亚洲色图| 欧美一区二区三区视频免费| 99精品99久久久久久宅男| 精东粉嫩av免费一区二区三区| 欧美私人啪啪vps| 美女被久久久| 久久国产精品99久久久久久老狼 | 女生裸体视频一区二区三区| 亚洲综合视频一区| 91久久久国产精品| 女女同性女同一区二区三区91| 欧美一级专区| 亚洲午夜av| 99视频一区二区| 亚洲风情亚aⅴ在线发布| 国产日韩欧美a| 国产精品一区二区欧美| 欧美日韩亚洲一区二区| 欧美国产国产综合| 国产精品99久久99久久久二8 | 久久久久久久尹人综合网亚洲| 一本综合精品| 亚洲狠狠丁香婷婷综合久久久| 韩日精品在线| 国产一区二区三区四区三区四| 国产精品草草| 国产精品久久夜| 国产精品xxxav免费视频| 欧美日韩亚洲综合一区| 欧美日韩国产三级| 欧美日本韩国一区二区三区| 欧美激情偷拍| 欧美精品免费在线| 欧美精品久久久久久久| 欧美精品1区2区3区| 欧美刺激午夜性久久久久久久| 免费不卡视频| 欧美高清影院| 欧美日韩一区二区三区免费看 | 亚洲综合不卡| 午夜精品久久久久久久99黑人| 亚洲免费在线观看视频| 亚洲欧美日韩区| 欧美夜福利tv在线| 久久国产一区二区| 久久综合狠狠| 欧美激情中文字幕一区二区| 亚洲国产高清自拍| 99国产精品99久久久久久| 一区二区三区色| 亚洲欧美视频在线观看视频| 先锋影音国产精品| 久久久久久国产精品mv| 欧美.日韩.国产.一区.二区| 欧美日本一区二区三区| 国产精品午夜国产小视频| 国产在线国偷精品产拍免费yy| 在线日韩欧美视频| 一本色道精品久久一区二区三区 | 在线观看91久久久久久|