久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

VS 2010 IDE 宏学习总结

發(fā)布時(shí)間:2025/4/14 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VS 2010 IDE 宏学习总结 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

自動(dòng)添加注釋—VS2010宏的使用



? ? 在敲代碼的過程中類和函數(shù)都需要進(jìn)行注釋,但總是一遍一遍的復(fù)制粘貼覺得很是麻煩,終于找到

了一個(gè)不錯(cuò)的解決方法:使用宏。


? ? 所謂宏,就是一些命令組織在一起,作為一個(gè)單獨(dú)命令完成一個(gè)特定任務(wù)。在日常的辦公環(huán)境中,
不論是Office還是Foxmail以及我們所使用的VS甚至輸入法都具有宏的功能。VS2010中的宏,不僅可以錄
制模塊、還可以錄制類和代碼文件。通過設(shè)置編輯宏,然后為設(shè)置好的宏添加特定的快捷鍵,就可以在
VS2010代碼編輯器中任何位置非常方便的添加設(shè)定的注釋塊。實(shí)現(xiàn)過程如下:
? ??
? ? 1、打開“工具”→“宏”→“宏IDE”,進(jìn)入以下界面,右擊“MyMacros”,添加模塊
? ? 命名模塊:
?
? ? 2、添加代碼并保存
? ? 雙擊所添加的模塊,進(jìn)入編輯狀態(tài),添加如下代碼:
[vb] view plain copy
Imports System ?
Imports EnvDTE ?
Imports EnvDTE80 ?
Imports EnvDTE90 ?
Imports EnvDTE90a ?
Imports EnvDTE100 ?
Imports System.Diagnostics ?
??
Public Module MyNote ?
??
? ? Sub DocumentFileHeader() ?
??
? ? ? ? Dim DocSel As EnvDTE.TextSelection ?
? ? ? ? DocSel = DTE.ActiveDocument.Selection ?
? ? ? ? DocSel.NewLine() ?
? ? ? ? DocSel.Text = "'************************************************" ?
? ? ? ? DocSel.NewLine() ?
? ? ? ? DocSel.Text = "'◇作者:吳利昌" ?
? ? ? ? DocSel.NewLine() ?
? ? ? ? DocSel.Text = "'◇小組:無" ?
? ? ? ? DocSel.NewLine() ?
? ? ? ? DocSel.Text = "'◇說明:" ?
? ? ? ? DocSel.NewLine() ?
? ? ? ? DocSel.Text = "'◇版本號(hào):V1.0" ?
? ? ? ? DocSel.NewLine() ?
? ? ? ? DocSel.Text = "'◇創(chuàng)建日期:" + System.DateTime.Now.ToLongDateString ?
? ? ? ? DocSel.NewLine() ?
? ? ? ? DocSel.Text = "'*************************************************" ?
??
? ? End Sub ?
??
End Module ?


? ? 3、設(shè)置快捷鍵
? ? 打開“工具”→“選項(xiàng)”,選擇“鍵盤”,進(jìn)行如下設(shè)置?
? ??
? ? 4、效果
[vb] view plain copy
'************************************************ ?
'◇作者:吳利昌 ?
'◇小組:無 ?
'◇說明: ?
'◇版本號(hào):V1.0 ?
'◇創(chuàng)建日期:2013年6月25日 星期二 ?
'************************************************* ?


========

為VS2010編寫IDE宏


網(wǎng)上有不少好書,可惜其中有很多是掃描版的,摘抄加注起來很麻煩。為方便自己,也為造福大眾,我

會(huì)將自己喜愛的整理一遍,轉(zhuǎn)換成文本版。

網(wǎng)上有現(xiàn)成的工具,可以將圖片版的pdf轉(zhuǎn)換成文本,保存到ms word中。如果源圖片足夠清晰的話,文

本的識(shí)別率還是很高的。

不過對(duì)于代碼,其格式則往往比較混亂。手工在word中進(jìn)行修正,麻煩不說,還容易出錯(cuò)。想起曾經(jīng)有

過幾次在VS2010中整理代碼,進(jìn)行的操作基本上都是查找替換和格式化等等;并且,從vs中拷貝的代碼

,在word中還可以保留語法高亮(關(guān)鍵字藍(lán)色,字符串暗紅色,注釋綠色)。(不足的是,從VS2010中

拷貝的中文,在word中顯示為亂碼;而從VS2008中拷貝,則完全正常,并且語法高亮也仍然有效)

查找替換和格式化都是些重復(fù)性的勞動(dòng),因此想著法子讓電腦去做。

一開始打算使用dos批處理,但這樣一來如果仍要使用語法高亮,就要手工拷貝到VS2010,在拷貝到word

,多了一個(gè)步驟,麻煩。于是就想能不能直接在VS2010中完成。沒想到還真行。通過網(wǎng)絡(luò)和MSDN,知道

VS提供了一個(gè)叫做IDE宏的東西。

IDE宏原理上和VBA差不多,或者說就是應(yīng)用于VS的VBA,只不過使用的VB變成.Net版的了(我不懂VB,如

果說錯(cuò)了勿怪)。

下面說說編寫IDE宏的具體步驟(VS2010):

按ALT+F11或者點(diǎn)擊菜單:工具-》宏-》宏IDE,出現(xiàn)一個(gè)和VS類似的IDE窗口:


在MyMacros上右鍵添加模塊,模塊名稱隨便起(我的如上圖所示,叫TieWen,是本人的網(wǎng)名)。


雙擊模塊名稱,打開編輯窗口,默認(rèn)的內(nèi)容如下:

Imports System Imports EnvDTE Imports EnvDTE80 Imports EnvDTE90 Imports EnvDTE90a Imports EnvDTE100 Imports System.Diagnostics Public Module aaa End Module

我們所要作的,就是在Module TieWen和End Module之間寫入合適的Sub(過程,無返回值)(能否寫成

Function(有返回值)本人并未深入研究)。

我最近正在整理的書籍中源碼是基于Java的,因此給Sub取名為Macro_FormatJava,完整的代碼如下(有

點(diǎn)問題,多多包涵):


[vb] view plain copy 在CODE上查看代碼片派生到我的代碼片
Imports System ?
Imports System.Collections.Generic ?
Imports EnvDTE ?
Imports EnvDTE80 ?
Imports EnvDTE90 ?
Imports EnvDTE90a ?
Imports EnvDTE100 ?
Imports System.Diagnostics ?
??
Public Module TieWen ?
??
? ? Sub MergeAll(ByRef Content As String, ByVal From As String, ByVal sTo As String) ?
? ? ? ? While (Content.Contains(From)) ?
? ? ? ? ? ? Content = Content.Replace(From, sTo) ?
? ? ? ? End While ?
? ? End Sub ?
??
? ? Sub PrefixLf(ByRef Content As String, ByVal Who As String) ?
? ? ? ? Content = Content.Replace(Who, vbLf + Who) ?
? ? End Sub ?
??
? ? Sub PostfixLf(ByRef Content As String, ByVal Who As String) ?
? ? ? ? Content = Content.Replace(Who, Who + vbLf) ?
? ? End Sub ?
??
? ? Sub DTEReplaceAll(ByVal Target As EnvDTE.vsFindTarget, ByVal From As String, ByVal sTo?


As String, Optional ByVal UseRegEx As Boolean = False, Optional ByVal bLoop As Boolean =?


True) ?
??
? ? ? ? DTE.Find.FindWhat = From ?
? ? ? ? DTE.Find.ReplaceWith = sTo ?
? ? ? ? DTE.Find.Target = Target ?
? ? ? ? DTE.Find.MatchCase = True ?
? ? ? ? DTE.Find.MatchWholeWord = False ?
? ? ? ? DTE.Find.MatchInHiddenText = False ?
? ? ? ? If (UseRegEx) Then ?
? ? ? ? ? ? DTE.Find.PatternSyntax = vsFindPatternSyntax.vsFindPatternSyntaxRegExpr ?
? ? ? ? Else ?
? ? ? ? ? ? DTE.Find.PatternSyntax = vsFindPatternSyntax.vsFindPatternSyntaxLiteral ?
? ? ? ? End If ?
? ? ? ? DTE.Find.ResultsLocation = vsFindResultsLocation.vsFindResultsNone ?
? ? ? ? DTE.Find.Action = vsFindAction.vsFindActionReplaceAll ?
? ? ? ? While ((DTE.Find.Execute() <> vsFindResult.vsFindResultNotFound) And bLoop) ?
??
? ? ? ? End While ?
??
? ? End Sub ?
? ? ' 以上幾個(gè)是輔助Sub,而不是宏 ?
??
??
? ? Sub Macro_FormatJava() ?
? ? ? ? DTE.ActiveDocument.Selection.SelectAll() ?
? ? ? ? Dim Content As String ?
? ? ? ? Content = DTE.ActiveDocument.Selection.Text ?
??
??
? ? ? ? '處理開始 ?
? ? ? ? Dim operators_NeedPrefixAndPostfixSpace(),?


operators_IfIsAssignmentNeedPrefixAndPostfixSpace(), operators_NeedPrefixSpace(),?


operators_NeedPostfixSpace(), operators_NeedNoSpace(),?


operators_IfMatchedThenNeedPrefixAndPostfixSpace() ?
? ? ? ? '此處無法使用VB的Array函數(shù) ?
? ? ? ? operators_NeedPrefixAndPostfixSpace = "public,class,interface,implements,return,:,


+,-,*,/,%,&,|,^,<<,>>,=,==,!=,<,<=,>,>=,&&,||".Split(",") ?
? ? ? ? operators_IfIsAssignmentNeedPrefixAndPostfixSpace = "+,-,*,/,%,&,|,^,<<,>>".Split


(",") ?
? ? ? ? operators_NeedPrefixSpace = "{,!,~".Split(",") ?
? ? ? ? operators_NeedPostfixSpace = ",|;".Split("|") ?
? ? ? ? operators_NeedNoSpace = "},->,::,.".Split(",") '不考慮case標(biāo)簽或其它符號(hào)后緊跟::的


情形 ?
? ? ? ? operators_IfMatchedThenNeedPrefixAndPostfixSpace = "new,delete".Split(",") ?
? ? ? ? '尚未處理的符號(hào):++、--(前后綴形式的區(qū)分比較麻煩)、()、[]、?: ?
? ? ? ? '一元操作符+、-、*、&被當(dāng)作二元操作符處理了; ?
? ? ? ? For Each i In operators_NeedPrefixAndPostfixSpace ?
? ? ? ? ? ? Content = Content.Replace(i, " " + i + " ") ?
? ? ? ? Next ?
??
? ? ? ? For Each i In operators_NeedPrefixSpace ?
? ? ? ? ? ? Content = Content.Replace(i, " " + i) ?
? ? ? ? Next ?
??
? ? ? ? For Each i In operators_NeedPostfixSpace ?
? ? ? ? ? ? Content = Content.Replace(i, i + " ") ?
? ? ? ? Next ?
??
? ? ? ? Content = Content.Replace(vbTab, " ") ?
? ? ? ? '去除多余的空格 ?
? ? ? ? MergeAll(Content, " ?", " ") ?
??
? ? ? ? '合并被分開的//、/*、*/、**,必須在去除多余的空格之后調(diào)用 ?
? ? ? ? MergeAll(Content, "/ /", "//") ?
? ? ? ? MergeAll(Content, "/ *", "/*") ?
? ? ? ? MergeAll(Content, "* /", "*/") ?
? ? ? ? MergeAll(Content, "* *", "**") ?
??
? ? ? ? '必須在去除多余的空格之后調(diào)用 ?
? ? ? ? For Each i In operators_IfIsAssignmentNeedPrefixAndPostfixSpace ?
? ? ? ? ? ? Content = Content.Replace(i + " =", i + "=") ?
? ? ? ? Next ?
??
? ? ? ? '必須在去除多余的空格之后調(diào)用 ?
? ? ? ? For Each i In operators_NeedPrefixSpace ?
? ? ? ? ? ? Content = Content.Replace(i + " ", i) ?
? ? ? ? Next ?
? ? ? ? For Each i In operators_NeedPostfixSpace ?
? ? ? ? ? ? Content = Content.Replace(" " + i, i) ?
? ? ? ? Next ?
??
? ? ? ? '必須在去除多余的空格之后調(diào)用 ?
? ? ? ? For Each i In operators_NeedNoSpace ?
? ? ? ? ? ? Content = Content.Replace(" " + i, i) ?
? ? ? ? ? ? Content = Content.Replace(i + " ", i) ?
? ? ? ? Next ?
??
? ? ? ? 'operators_IfMatchedThenNeedPrefixAndPostfixSpace無需處理 ?
??
? ? ? ? Dim operators_NeedPrefixLf(), operators_NeedPostfixLf() ?
? ? ? ? '此處無法使用VB的Array函數(shù) ?
? ? ? ? operators_NeedPrefixLf = "},if(,if( ,for(, for (,return".Split(",") ?
? ? ? ? operators_NeedPostfixLf = "{".Split(",") ?
??
? ? ? ? For Each i In operators_NeedPrefixLf ?
? ? ? ? ? ? PrefixLf(Content, i) ?
? ? ? ? Next ?
? ? ? ? For Each i In operators_NeedPostfixLf ?
? ? ? ? ? ? PostfixLf(Content, i) ?
? ? ? ? Next ?
??
? ? ? ? Content = Content.Replace(vbCrLf, vbLf) ?
? ? ? ? Content = Content.Replace(vbCr, vbLf) ?
? ? ? ? MergeAll(Content, " " + vbLf, vbLf) ?
? ? ? ? MergeAll(Content, vbLf + vbLf, vbLf) ?
??
? ? ? ? '調(diào)用ALT+F8格式化代碼(在我的機(jī)器上會(huì)自動(dòng)在行尾增加空格,因此上面的替換僅為處理{}使

用,具體的去除行尾空格,已使用查找替換實(shí)現(xiàn)) ?
? ? ? ? DTE.ActiveDocument.Selection.Text = Content ?
? ? ? ? DTE.ActiveDocument.Selection.SelectAll() ?
? ? ? ? DTE.ExecuteCommand("Edit.FormatSelection") ?
??
? ? ? ? DTE.ActiveDocument.Selection.SelectAll() ?
??
? ? ? ? '將Tab替換成四個(gè)空格 ?
? ? ? ? '由于DTE.ActiveDocument.Selection.Text = Content會(huì)自動(dòng)進(jìn)行格式化, ?
? ? ? ? '所以不能用代碼進(jìn)行替換再賦值,否會(huì)會(huì)導(dǎo)致多余的空格。 ?
? ? ? ? '通過查找替換功能實(shí)現(xiàn) ?
? ? ? ? DTEReplaceAll(vsFindTarget.vsFindTargetCurrentDocumentSelection, vbTab, " ? ?") ?
? ? ? ? '結(jié)束處理 ?
? ? End Sub ?
End Module ?
?


?Sub寫好之后,就是將之應(yīng)用到VS。


點(diǎn)擊VS的菜單:工具-》選項(xiàng),切換到環(huán)境-》鍵盤:

在顯示命令包含下的輸入框中輸入先前的模塊名或Sub的名稱,等上1-2秒鐘,會(huì)將過濾后的結(jié)果刷新在


輸入框下發(fā)的列表中:

選中對(duì)應(yīng)的宏(剛剛我們所編寫的Sub),然后將光標(biāo)放在“按快捷鍵P”下方的輸入框中,按一個(gè)快捷

鍵,如果該快捷鍵已經(jīng)被其它命令占用,會(huì)在“快捷鍵的當(dāng)前使用對(duì)象U”下方的下拉框中顯示出來:

此時(shí)按Backspace,刪除快捷鍵,重新選擇一個(gè)(注意,一定要按Backspace刪除,不要直接繼續(xù)按),

直到該快捷鍵未被占用(我選到的時(shí)候ALT+T),然后點(diǎn)擊“分配”按鈕,點(diǎn)擊確定關(guān)閉選項(xiàng)窗口。

然后,打開一個(gè)源碼文檔,按下快捷鍵(我的是ALT+T)試試效果吧。

如果覺得不好,就修改Sub,直到自己滿意為止。
?
補(bǔ)充:

如果發(fā)現(xiàn)有些IDE已經(jīng)實(shí)現(xiàn)的功能而自己不會(huì)寫,可以使用VS的宏記錄功能:

按Ctrl+Shift+R或者點(diǎn)擊菜單項(xiàng)“工具-〉宏-〉記錄TemporaryMacro”,然后執(zhí)行VS動(dòng)作(比如執(zhí)行查

找替換),完畢后停止宏記錄,然后打開宏編輯器,打開RecordingModule,代碼全在這里頭。
========

VS2010編寫自定義宏


這里所說的宏可不是指#define PI 3.14159之類的,而是按下Alt + 1,Alt + 2之類的鍵盤組合之后可以

方便地插入一大串自定義的內(nèi)容,如:

/*******************************************************************?
* 函數(shù)名稱:?
* 功 ? ?能:?
* 參 ? ?數(shù):?
* 返 回 值:void?
* 創(chuàng) 建 人:Ajioy?
* 博 ? ?客:blog.csdn.net/ajioy?
* 電子郵箱:ajioy1206@gmail.com?
* 日 ? ?期:2013.1.8 21:18?
*******************************************************************/ ?

這在團(tuán)隊(duì)開發(fā)中顯得尤為重要,當(dāng)然,在網(wǎng)絡(luò)上發(fā)布源代碼時(shí)也起到一個(gè)簡(jiǎn)單地版權(quán)聲明作用,而不需

要人為地花時(shí)間編寫及排版,減少了許多繁瑣而不必要的工作。

簡(jiǎn)單地了解一下,這里談的宏(Macro)是開發(fā)工具VS2010(或VS的其它版本)自帶的,一種方便開發(fā)人

員進(jìn)行注釋、版權(quán)聲明或者執(zhí)行其他若干瑣碎工作的“小機(jī)器人”。重復(fù)、不辭勞苦地為我們做一些不

可缺少的小事。總之,有它的存在,生活更美好。

怎樣自己寫一個(gè)宏?

1.打開VS2010(或VS的其它版本),“Tools” --> ?"Macros"--->"Macros IDE...(Alt + F11)" 打開

宏IDE

2.在宏IDE的工具欄中"Project"->"Add Module"(或Add New Item)->Name:AjioyMacros--->"Add"


3.將初始內(nèi)容替換成以下代碼

Imports System ?
Imports EnvDTE ?
Imports EnvDTE80 ?
Imports EnvDTE90 ?
Imports EnvDTE90a ?
Imports EnvDTE100 ?
Imports System.Diagnostics ?
Imports System.Text ?
Imports System.Text.RegularExpressions ?
Imports System.IO ?
Imports System.Collections.Specialized ?
??
Public Module AjioyMacros'這里要與保存的Module名保持一致,不然無法調(diào)用宏 ?
? ? Sub AddMessageBox() ?
? ? ? ? 'DESCRIPTION 增加對(duì)話框 ?
? ? ? ? ActiveDocument.Selection.Text = "MessageBox("""",""提示"");" + vbNewLine + "system


(""pause"");" ?
? ? End Sub ?
? ? Sub AddStartComment() ?
? ? ? ? 'DESCRIPTION 注釋開始 ?
? ? ? ? ActiveDocument.Selection.Text = "system(""pause"");" ?
? ? End Sub ?
? ? Public Sub FileSign() ?
? ? ? ? 'DESCRIPTION 文件簽名 ?
? ? ? ? Dim Description As New StringBuilder ?
? ? ? ? Dim BlankLine As String ?
? ? ? ? BlankLine = "//" + vbNewLine ?
? ? ? ? With Description ?
? ? ? ? ? ? .AppendFormat("//Copyright (c) 2013 Ajioy All Rights Reserved{0}",vbNewLine) ?
? ? ? ? ? ? .AppendFormat


("/****************************************************************************************


*****{0}", vbNewLine) ?
? ? ? ? ? ? .AppendFormat("*文件名:{0}{1}{2}", vbTab, DTE.ActiveDocument.Name, vbNewLine) ?
? ? ? ? ? ? .AppendFormat("*說明:{0}{1}{2}", vbTab, "", vbNewLine) ?
? ? ? ? ? ? .AppendFormat("*創(chuàng)建日期:{0}{1}{2}", vbTab, Date.Today.ToString("yyyy-MM-dd"),?


vbNewLine) ?
? ? ? ? ? ? .AppendFormat("*作者:{0}{1}{2}", vbTab, "Ajioy", vbNewLine) ?
? ? ? ? ? ? .AppendFormat("*版本:{0}{1}{2}", vbTab, "1.0", vbNewLine) ?
? ? ? ? ? ? .AppendFormat


("*----------------------------------------------------------------------------------------


------{0}", vbNewLine) ?
? ? ? ? ? ? .AppendFormat("*修改記錄:{0}", vbNewLine) ?
? ? ? ? ? ? .AppendFormat("*日期{0}版本{1}修改人{(lán)2}修改內(nèi)容{3}", New String(vbTab, 3),?


vbTab, vbTab, vbNewLine) ?
? ? ? ? ? ? .AppendFormat("*{0}{1}", Date.Today.ToString("yyyy-MM-dd"), vbNewLine) ?
? ? ? ? ? ? .AppendFormat


("*****************************************************************************************


***/{0}", vbNewLine) ?
? ? ? ? ? ? .Append(vbNewLine) ?
? ? ? ? End With ?
? ? ? ? '插入cs文件頭部 ?
? ? ? ? Dim objSel As TextSelection ?
? ? ? ? objSel = CType(DTE.ActiveDocument.Selection, TextSelection) ?
? ? ? ? DTE.UndoContext.Open("FileSign") ?
? ? ? ? objSel.StartOfDocument(False) ?
? ? ? ? objSel.Insert(Description.ToString()) ?
? ? ? ? DTE.UndoContext.Close() ?
? ? End Sub ?
? ? Sub FunctionSign() ?
? ? ? ? 'DESCRIPTION 文件簽名 ?
? ? ? ? Dim obj ?
? ? ? ? obj = Now() ?
? ? ? ? Dim DocSel As EnvDTE.TextSelection ?
? ? ? ? DocSel = DTE.ActiveDocument.Selection ?
? ? ? ? DocSel.NewLine() ?
? ? ? ? DocSel.Text =?


"/*******************************************************************" ?
? ? ? ? DocSel.NewLine() ?
? ? ? ? DocSel.Text = "* 函數(shù)名稱:" ?
? ? ? ? DocSel.NewLine() ?
? ? ? ? DocSel.Text = "* 功 ? ?能:" ?
? ? ? ? DocSel.NewLine() ?
? ? ? ? DocSel.Text = "* 參 ? ?數(shù):" ?
? ? ? ? DocSel.NewLine() ?
? ? ? ? DocSel.Text = "* 返 回 值:" ?
? ? ? ? DocSel.NewLine() ?
? ? ? ? DocSel.Text = "* 創(chuàng) 建 人:Ajioy" ?
? ? ? ? DocSel.NewLine() ?
? ? ? ? DocSel.Text = "* 博 ? ?客:blog.csdn.net/ajioy" ?
? ? ? ? DocSel.NewLine() ?
? ? ? ? DocSel.Text = "* 電子郵箱:ajioy1206@gmail.com" ?
? ? ? ? DocSel.NewLine() ?
? ? ? ? DocSel.Text = "* 日 ? ?期:" + CStr(Year(obj)) + "." + CStr(Month(obj)) + "." +?

CStr(Day(obj)) + " " + CStr(Hour(obj)) + ":" + CStr(Minute(obj))?

'System.DateTime.Now.ToLongDateString() ?
? ? ? ? DocSel.NewLine() ?
? ? ? ? DocSel.Text =?


"*******************************************************************/" ?
? ? End Sub ?
? ? Sub AddModify() ?
? ? ? ? 'DESCRIPTION 增添修改 ?
? ? ? ? Dim obj ?
? ? ? ? obj = Now() ?
? ? ? ? ActiveDocument.Selection.Text = "//Ajioy" + CStr(Year(obj)) + "." + CStr(Month


(obj)) + "." + CStr(Day(obj)) ?+" " + CStr(Hour(obj)) + ":" + CStr(Minute(obj)) + " 修改" ?
? ? End Sub ?
? ? Sub AddStartSymbol() ?
? ? ? ? 'DESCRIPTION 開始注釋 ?
? ? ? ? ActiveDocument.Selection.Text = "/*" ?
? ? End Sub ?
? ? Sub AddEndSymbol() ?
? ? ? ? 'DESCRIPTION 結(jié)束注釋 ?
? ? ? ? ActiveDocument.Selection.Text = "*/" ?
? ? End Sub ?
End Module ?
保存后關(guān)閉宏IDE


4.回到VS2010主界面,"Tools"--->"Options"--->"Environment"--->"Keyboard"--->在Show commands?


containing:下的編輯框中輸入FunctionSign(所有帶括號(hào)的那些名稱,如AddStartSymbol()...),會(huì)


看到有"Macros.Macros(或Samples).AjioyMacros.FunctionSign"的項(xiàng),選中它,在Press shortcut?

keys:下自定義快捷鍵,建議用Alt + ?數(shù)字0-9和-+鍵組合,以免與編譯環(huán)境快捷鍵發(fā)生沖突,之

后"Assign",最后確定。

接下來我們可以隨便驗(yàn)證一下,打開一個(gè).cpp文件,按下Alt + 數(shù)字,看看會(huì)發(fā)生什么。


========

讓vs2010自動(dòng)完成雙引號(hào)



? ?廣大碼奴們,敲碼時(shí)遇到需要輸入雙引號(hào),方括號(hào),圓括號(hào)是不是很煩躁,

如果有一種只需要輸入一個(gè)左邊括號(hào),就可以自動(dòng)補(bǔ)齊另一邊括號(hào),并且可以自

動(dòng)將光標(biāo)定位到括號(hào)中間,輸入完畢后又可以方便的跳出括號(hào)的工具,那效率會(huì)


不會(huì)高很多。

? ? 百度了很久,都沒有什么好的解決方案,不是裝VA就是resharper插件,

但是也只是可以自動(dòng)補(bǔ)齊和定位而已,想要跳出仍然需要利用鍵盤上的右方向

鍵,手部移動(dòng)幅度很大有木有,完全打亂了敲碼的節(jié)奏,破壞了憂郁的氣質(zhì),好

吧,我之前一直都用鼠標(biāo)來的。。。

?找不到現(xiàn)成的方法,只能自己動(dòng)手豐衣足食了。突然發(fā)現(xiàn) virtual studio是支持宏操作的,于是樓主

靈光一閃,想到了利用宏來自動(dòng)實(shí)現(xiàn)上述功能的方法,不多說,直接上圖。


?1.工具-宏-記錄TemporaryMacro

?
2. 接下來就不用我多說了,和office中的一樣,錄制宏,比如你可以在文本編輯窗口輸入“ ( ”,“?

) ”,“ <— ”(方向鍵),然后停止錄制宏。這樣我們就有了可以自動(dòng)完成雙引號(hào)并定位到中間位

置的快捷操作,依次可以得到自動(dòng)完成圓括號(hào),方括號(hào)等等的宏。這是我自己錄制的7個(gè)宏。
?

3. 接下來我們還要把這些宏和具體的快捷鍵綁定起來,這樣我們只要在鍵盤上敲打快捷鍵就可以自動(dòng)完


??

在“顯示命令包含”中輸入“宏”,會(huì)自動(dòng)顯示你剛剛錄制的所有宏,選擇一個(gè),設(shè)置快捷鍵,注意設(shè)

置完要點(diǎn)“分配”
?
?
這樣一個(gè)宏就設(shè)置完了,接下來把你錄制的所有宏都設(shè)置一個(gè)你認(rèn)為方便你操作的快捷鍵即可。


4.接下來和大家分享一下我的設(shè)計(jì)方案。我選取了H,J,K,L,N,M,Alt,空格這8個(gè)元素,她們?cè)阪I盤上的位


置都在右手可以控制的范圍內(nèi),非常靈活便捷,不想錄制的朋友也可以直接粘貼我設(shè)置好的宏代碼。


Alt+H : 刪除,即backspace Sub 刪除()DTE.ActiveDocument.Selection.DeleteLeft() End SubAlt+J:輸入雙引號(hào)并定位到中間Sub 打出雙引號(hào)()DTE.ActiveDocument.Selection.Text = """"""DTE.ActiveDocument.Selection.CharLeft()End SubAlt+K:輸入圓括號(hào)并定位到中間Sub 打出括號(hào)()DTE.ActiveDocument.Selection.Text = "()"DTE.ActiveDocument.Selection.CharLeft()End SubAlt+L:輸入方括號(hào)并定位到中間 Sub 打出方括號(hào)()DTE.ActiveDocument.Selection.Text = "[]"DTE.ActiveDocument.Selection.CharLeft() End SubAlt+N:撤銷Sub 撤銷()DTE.ExecuteCommand("Edit.Undo")End SubAlt+M:反撤銷Sub 反撤銷()DTE.ExecuteCommand("Edit.Redo")End SubAlt+空格:自動(dòng)跳出括號(hào) Sub 跳出()DTE.ActiveDocument.Selection.CharRight() End Sub

Ps:
1.?
所有的vs編輯器都支持宏,所以這個(gè)方法可以用在vs各個(gè)版本上,你也可以依此在office上操作
2.事實(shí)上由于升級(jí)的微軟補(bǔ)丁沖突,很多vs的宏功能已經(jīng)被破壞,是無法運(yùn)行任何宏的。基本都是在安

裝KB2898869、KB2901126、KB2898857等更新后宏停止運(yùn)行。查看了一下提供的解決方案,修改宏配置文

件,VS2010的配置文件路徑為:C:\Program Files (x86)\Common Files\microsoft shared\VSA


\9.0\VsaEnv目錄下的vsmsvr10.exe.config,在RunTime配置節(jié)添加配置項(xiàng):
<AllowDComReflection enabled="1"/>即可
?
32bit和64bit的windows,以及vs不同版本的路徑和配置文件如下
?
在之前7個(gè)宏的基礎(chǔ)上再新加8個(gè)宏,一共15個(gè),基本涵蓋了所有常用的操作。


alt+e:光標(biāo)向上
alt+d:光標(biāo)向下
alt+s:光標(biāo)向左
alt+f:激活文件窗口,有時(shí)由于鼠標(biāo)操作或別的問題代碼頁面會(huì)失去焦點(diǎn),這個(gè)快捷鍵可以讓光標(biāo)重新


出現(xiàn)在代碼文件上
alt+i:復(fù)制代碼段,指定行號(hào),當(dāng)前光標(biāo)位置和指定行之間代碼全部選定
alt+g:指定行號(hào),光標(biāo)自動(dòng)跳到改行
alt+r:將選定代碼段注釋
alt+t:將注釋代碼段解開

15個(gè)快捷鍵全部由alt帶動(dòng), s,e,d,f,r,t,g,h,j,k,l,n,m,i,空格 ? ? 充分考慮手指的擺動(dòng)幅度,幾乎

可以保證最大限度的連續(xù)操作。

并不想將vs真的改造成vim,簡(jiǎn)單,甚好。

另外vs的宏模塊全部可以導(dǎo)出,快捷鍵的綁定配置文件也可以導(dǎo)出,這樣,把這兩個(gè)文件上傳到你的微

云或百度云盤,就可以保證你的隨時(shí)隨地使用了。
??
15Macros.vb( 宏模塊文件,可導(dǎo)入)
-------------------------------------------------------------------------------------------


-------------------------------------------------------------------------------------
Option Strict Off
Option Explicit Off
Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports EnvDTE90a
Imports EnvDTE100
Imports System.Diagnostics
Public Module RecordingModule


? ? Sub 打出括號(hào)()
? ? ? ? DTE.ActiveDocument.Selection.Text = "()"
? ? ? ? DTE.ActiveDocument.Selection.CharLeft()
? ? End Sub


?Sub 向右()
? ? ? ? DTE.ActiveDocument.Selection.CharRight()
?End Sub


? ? Sub 打出方括號(hào)()
? ? ? ? DTE.ActiveDocument.Selection.Text = "[]"
? ? ? ? DTE.ActiveDocument.Selection.CharLeft()
? ? End Sub


? ? Sub 打出雙引號(hào)()
? ? ? ? DTE.ActiveDocument.Selection.Text = """"""
? ? ? ? DTE.ActiveDocument.Selection.CharLeft()
? ? End Sub


? ? Sub 刪除()
? ? ? ? DTE.ActiveDocument.Selection.DeleteLeft()
? ? End Sub


? ? Sub 撤銷()
? ? ? ? DTE.ExecuteCommand("Edit.Undo")
? ? End Sub


? ? Sub 反撤銷()
? ? ? ? DTE.ExecuteCommand("Edit.Redo")
? ? End Sub


? ? Sub 向左()
? ? ? ? DTE.ActiveDocument.Selection.CharLeft()
? ? End Sub


? ? Sub 向上()
? ? ? ? DTE.ActiveDocument.Selection.LineUp()
? ? End Sub


? ? Sub 向下()
? ? ? ? DTE.ActiveDocument.Selection.LineDown()
? ? End Sub


? ? Sub 激活()
? ? ? ? ActiveDocument.Activate()
? ? End Sub


? ? Sub 轉(zhuǎn)行()
? ? ? ? Dim command As Integer
? ? ? ? command = InputBox("Enter a number: ")
? ? ? ? DTE.ActiveDocument.Selection.GotoLine(command)
? ? End Sub


? ? Sub 復(fù)制()
? ? ? ? Dim textSelection As EnvDTE.TextSelection
? ? ? ? Dim textSelectionPointSaved As TextPoint
? ? ? ? Dim command As Integer
? ? ? ? textSelection = DTE.ActiveWindow.Selection
? ? ? ? textSelectionPointSaved = textSelection.ActivePoint.CreateEditPoint()
? ? ? ? command = InputBox("Enter a number: ")
? ? ? ? selection = ActiveDocument.Selection
? ? ? ? d = selection.TopPoint.Line
? ? ? ? If ((d - command) > 0) Then
? ? ? ? ? ? For arrIdx = 1 To (d - command)
? ? ? ? ? ? ? ? selection.LineUp(True)
? ? ? ? ? ? Next
? ? ? ? ? ? textSelection.StartOfLine()
? ? ? ? ElseIf ((d - command) < 0) Then
? ? ? ? ? ? For arrIdx = 1 To (command - d)
? ? ? ? ? ? ? ? selection.LineDown(True)
? ? ? ? ? ? Next
? ? ? ? ? ? textSelection.EndOfLine()
? ? ? ? Else
? ? ? ? ? ? textSelection.StartOfLine()
? ? ? ? ? ? textSelectionPointSaved = textSelection.ActivePoint.CreateEditPoint()
? ? ? ? ? ? textSelection.EndOfLine()
? ? ? ? End If
? ? ? ? textSelection.MoveToPoint(textSelectionPointSaved, True)
? ? End Sub
?
? ? Sub 注釋()
? ? ? ? DTE.ExecuteCommand("Edit.CommentSelection")
? ? End Sub


? ? Sub 解開注釋()
? ? ? ? DTE.ExecuteCommand("Edit.UncommentSelection")
? ? End Sub




End Module


========

VS2010編寫自定義宏,定義解決方案項(xiàng)目折疊、展開快捷鍵


怎樣自己寫一個(gè)宏?

1.打開VS2010(或VS的其它版本),“Tools” --> ?"Macros"--->"Macros IDE...(Alt + F11)" 打開

宏IDE

2.在宏IDE的工具欄中"MyMacros"->"Add Module"->CollapseExpandAllProject

3. 將初始內(nèi)容替換成以下代碼

Option Strict Off
Option Explicit Off
Imports System
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports System.Diagnostics

Public Module CollapseExpandAllProject ? ‘(特別注意:這里要與保存的Module名保持一致,不然

無法調(diào)用宏 )

? ? '-----------------------------------------------?
? ? 'Collapse All projects ?折疊
? ? 'Author:ZhangRongHua
? ? 'Date:2010-05-12
? ? '-----------------------------------------------
? ? Public Sub CollapseAllProject()
? ? ? ? lastSlashIndex = DTE.Solution.FullName.LastIndexOf("\") + 1 ?'Get the last slash?


index .
? ? ? ? solutionNameWithExtension = DTE.Solution.FullName.Substring(lastSlashIndex) ?' Get?


solution name with extension.?
? ? ? ? solutionName = solutionNameWithExtension.ToString().Substring(0,?


solutionNameWithExtension.ToString().Length - 4) ' Get the solution name without extension?


.
? ? ? ? count = 0
? ? ? ? For Each curProject As EnvDTE.Project In DTE.Solution.Projects
? ? ? ? ? ? Try
? ? ? ? ? ? ? ? DTE.ActiveWindow.Object.GetItem(solutionName + "\" +?


curProject.Name).UIHierarchyItems.Expanded = False
? ? ? ? ? ? ? ? count = count + 1
? ? ? ? ? ? Catch ex As ArgumentException
? ? ? ? ? ? ? ? Continue For
? ? ? ? ? ? End Try
? ? ? ? Next curProject




? ? End Sub


? ? '-----------------------------------------------?
? ? 'Expand All projects ?展開
? ? 'Author:ZhangRongHua
? ? 'Date:2010-05-12
? ? '-----------------------------------------------
? ? Public Sub ExpandAllProject()
? ? ? ? lastSlashIndex = DTE.Solution.FullName.LastIndexOf("\") + 1 ?'Get the last slash?


index .
? ? ? ? solutionNameWithExtension = DTE.Solution.FullName.Substring(lastSlashIndex) ?' Get?


solution name with extension.?
? ? ? ? solutionName = solutionNameWithExtension.ToString().Substring(0,?


solutionNameWithExtension.ToString().Length - 4) ' Get the solution name without extension?


.
? ? ? ? count = 0


? ? ? ? For Each curProject As EnvDTE.Project In DTE.Solution.Projects
? ? ? ? ? ? Try
? ? ? ? ? ? ? ? DTE.ActiveWindow.Object.GetItem(solutionName + "\" +?


curProject.Name).UIHierarchyItems.Expanded = True
? ? ? ? ? ? ? ? count = count + 1
? ? ? ? ? ? Catch ex As ArgumentException
? ? ? ? ? ? ? ? Continue For
? ? ? ? ? ? End Try
? ? ? ? Next curProject
? ? End Sub


End Module
保存后關(guān)閉宏IDE


4、回到VS2010主界面(注意是在VS2010主界面,不是打開了某一個(gè)解決方案的主界面),"Tools"---


>"Options"--->"Environment"--->"Keyboard"--->在Show commands containing:下的編輯框中輸入


macro(所有含macro的那些名稱),會(huì)看到


有"MyMacros.CollapseExpandAllProject.CollapseAllProject"的項(xiàng),選中它,在Press shortcut?


keys:下自定義快捷鍵,建議用Alt + ?數(shù)字0-9和-+鍵組合,以免與編譯環(huán)境快捷鍵發(fā)生沖突,之


后"Assign",最后確定。




5、接下來我們可以驗(yàn)證一下,打開一個(gè)解決方案,按下Alt + 數(shù)字,會(huì)執(zhí)行對(duì)應(yīng)操作。


注意,按下快捷鍵時(shí),鼠標(biāo)要定位到解決方案資源管理器上面,不然會(huì)報(bào)錯(cuò)




參見:


http://www.cnblogs.com/zhangronghua/archive/2010/05/12/Colloapse_Expand_Macro.html
========

VS2010自定義宏注釋模板



通過宏IDE進(jìn)行宏編輯從而達(dá)到在編碼時(shí)實(shí)現(xiàn)自動(dòng)添加注釋的作用。
操作有兩個(gè)步驟:
1、編輯宏注釋
2、為宏添加快捷鍵方便操作。
下面詳說以上兩步:
1、VS2010->工具->宏(Macros)->宏IDE。
接著就是在宏編輯的IDE環(huán)境中,添加新項(xiàng)->新建名稱->宏編輯(參照模板)->保存->返回VS2010。
2、VS2010->工具->選項(xiàng)(Options)->環(huán)境下的鍵盤->在顯示命令包含:的方框中輸入第一步新建的宏注


釋的名字->選擇該宏注釋->定義快捷鍵(按個(gè)人喜歡,不要有沖突)->快捷鍵用于全局->分配->確定。
以上就已經(jīng)做好了你的宏注釋模板了,在以后的個(gè)人編程和團(tuán)隊(duì)工作時(shí)就可以采用這樣的方式進(jìn)行統(tǒng)一


化注釋規(guī)則。
宏注釋模板:
Sub AddFunComment()
? ? ? ? Dim DocSel As EnvDTE.TextSelection
? ? ? ? DocSel = DTE.ActiveDocument.Selection
? ? ? ? DocSel.NewLine()
? ? ? ? DocSel.Text = ""
? ? End Sub
以上學(xué)習(xí)于http://blog.chinaunix.net/uid-21375345-id-3085290.html。
========
使用宏來完成一些煩瑣的代碼


  在 Visual Studio 2012 之前的版本,當(dāng)有些效果我們經(jīng)常會(huì)使用但又無法單純的用一個(gè)快捷命令


來實(shí)現(xiàn)時(shí),就可以通過宏來創(chuàng)建自己的快捷命令。但是 Microsoft 再考慮到自定義宏的維護(hù)成本過高而


且只支持VB,因此拋棄了對(duì)它的支持。




  下面的演示只限于 Visual Studio 2012 之前的版本。


  通過錄制宏來實(shí)現(xiàn)一個(gè)最簡(jiǎn)單的功能


  1. 打開 工具 / 宏 / 錄制宏

  2. 在代碼編輯器中輸入


Console.WriteLine("Hi");
?
  3. 點(diǎn)擊停止錄制宏


  打開 工具 / 宏 / 宏資源管理器,找到 RecordingModule 并展開,雙擊 TemporaryMacro。這個(gè)時(shí)


候會(huì)發(fā)現(xiàn)編輯器光標(biāo)所在的位置已經(jīng)自動(dòng)插入了一條 “Console.WriteLine("Hi")” 代碼。

動(dòng)畫演示:如何創(chuàng)建一個(gè)最簡(jiǎn)單的宏

  本節(jié)只演示宏的基本功能,更多關(guān)于宏的高級(jí)用法,請(qǐng)見《Visual Studio 宏的高級(jí)用法》。
?


  注:2014年2月之后,Windows的一次更新將導(dǎo)致 Visual Studio 無法運(yùn)行 macro,按照該文章的方


法修改三個(gè)配置文件即可以修復(fù)。


?
========

Visual Studio 宏的高級(jí)用法


因?yàn)樽?Visual Studio 2012 開始,微軟已經(jīng)取消了對(duì)宏的支持,所以本篇文章所述內(nèi)容只適用于?

Visual Studio 2010 或更早期版本的 VS。

  在上一篇中,我已經(jīng)介紹了如何編寫一個(gè)最簡(jiǎn)單的宏,本文將進(jìn)一步介紹如何用宏來實(shí)現(xiàn)對(duì)代碼編

輯窗口控制。在本文結(jié)束的時(shí)候,你應(yīng)該能自己實(shí)現(xiàn)如下兩個(gè)功能,第一個(gè)用于對(duì)方法體進(jìn)行 phase0?

標(biāo)記;第二個(gè)可以將當(dāng)前窗口中的代碼進(jìn)行歸類,將所有方法、屬性、變量通過region進(jìn)行分塊。



動(dòng)畫演示:phase0?




動(dòng)畫演示:設(shè)置 region


為什么使用宏


  在計(jì)算機(jī)行業(yè)內(nèi),宏的出現(xiàn)由來已久,因?yàn)樗芴娲藗儓?zhí)行一些重復(fù)發(fā)生的簡(jiǎn)單但煩瑣的事情,


所以廣受人們歡迎。在 Visual Studio 中也提供了進(jìn)行宏編程的方法,從而方便開發(fā)人員錄制一些宏腳


本來擴(kuò)展Visual Studio,以提高開發(fā)效率。


  要想在 Visual Studio 中操作宏來操控代碼編輯窗口,就必須要了解如下幾個(gè)東東:EnvDTE、DTE


、TextSelection、EditPoint。宏可實(shí)現(xiàn)地遠(yuǎn)不止是操控代碼編輯窗口,關(guān)于其它能力請(qǐng)見參考資源[1]




  本文中的內(nèi)容在閱讀過程中最好能結(jié)合實(shí)踐進(jìn)行練習(xí),這樣印象會(huì)更深刻。?


EnvDTE

  EnvDTE 是最核心的程序集,所有后續(xù)要講到的東西都?xì)w于它名下。

  MSDN上對(duì)它的介紹:


EnvDTE 是包含 Visual Studio 內(nèi)核自動(dòng)化的對(duì)象和成員的用程序集包裝的 COM 庫。 在 EnvDTE80、


EnvDTE90、 EnvDTE90a 和 EnvDTE100 命名空間中包含更改和新功能。


  EnvDTE80、90、100按照數(shù)字,越大的表示越新,因?yàn)閂isual Stuido有好多版本,不同的版本會(huì)提


供新的功能,而這幾個(gè)版本的 EnvDTE 正是對(duì)應(yīng)了這些更新,不同的版本只是在功能上做了補(bǔ)充,并沒


有誰能替代誰的關(guān)系,比如editPoint2 比 editPoint 可能多了某些新特性,當(dāng)你要使用這些新特性的


時(shí)候,就應(yīng)該使用editPoint2,否則還是使用 editPoint。


  在編寫自己的擴(kuò)展前,可以把EnvDTE、EnvDTE80 等全部引用進(jìn)來。


Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports EnvDTE90a
Imports EnvDTE100
?


DTE對(duì)象


  在 Visual Studio 中, DTE 對(duì)象是自動(dòng)化模型中的頂級(jí)對(duì)象,通過操作DTE對(duì)象可以獲取對(duì)?


Visual Studio 的控制,比如你可以得到當(dāng)前活動(dòng)的文檔、活動(dòng)的窗口、活動(dòng)的項(xiàng)目、查找與替換、向


解決方案中添加文件、執(zhí)行預(yù)定義命令、錄制宏等。




  DTE包含的屬性(局部)


上面只是截取了一部分,完整的請(qǐng)查看 MSDN?




  DTE包含的方法




  通過操控這些屬性和方法就可以實(shí)現(xiàn)強(qiáng)大的功能,下面的例子中通過操縱DTE對(duì)象的TextSelecion子


對(duì)象和Find子對(duì)象來調(diào)用 Visual Studio 的查找功能。

Dim selection As TextSelection = DTE.ActiveDocument.SelectionDTE.Find.MatchWholeWord = FalseDTE.Find.Action = vsFindAction.vsFindActionFindDTE.Find.Target = vsFindTarget.vsFindTargetCurrentDocumentDTE.Find.MatchCase = FalseDTE.Find.Backwards = FalseDTE.Find.MatchInHiddenText = TrueDTE.Find.PatternSyntax = vsFindPatternSyntax.vsFindPatternSyntaxLiteral'跳出輸入框,接收你的輸入what = InputBox(prompt)If (what <> "") ThenDTE.Find.FindWhat = what'相當(dāng)于在當(dāng)前文檔向下搜索一次Dim result = DTE.Find.Execute()If (result = vsFindResult.vsFindResultFound) Then’如果找到,就把那一行選中selection.SelectLine()End IfEnd If

?  上面的代碼并不復(fù)雜,就是簡(jiǎn)單地對(duì) Find 的調(diào)用和賦值。如果你正好看到這里,不仿也試著寫一


下吧~ Find 相關(guān)內(nèi)容請(qǐng)查看參考資源[2]。


TextSelection

  用于代表當(dāng)前選定的區(qū)域,一個(gè)文檔有且只有一個(gè)實(shí)例,即使你在代碼中創(chuàng)建了多個(gè)實(shí)例,這些實(shí)


例其實(shí)都是指向同一個(gè)選定區(qū)域。對(duì) TextSelection 的操控會(huì)直接體現(xiàn)在界面上。通過控制該對(duì)象可以


剪切、復(fù)制、刪除選中的文本,插入刪除空白行,大小寫轉(zhuǎn)換,定位到某個(gè)位置、格式化等。


  TextSelection 的屬性


  TextSelection 的方法(局部)


完整的請(qǐng)查看 MSDN?


?
  一句話獲取 TextSelection 實(shí)例,因?yàn)?TextSelection 是針對(duì)文檔的,所以在獲取 Selection 之


前,必須先獲取文檔。如果當(dāng)前文檔中并沒有選中任何文本,則 TextSelection 表示的是當(dāng)前光標(biāo)所在


的位置。


Dim selection As TextSelection = DTE.ActiveDocument.Selection
?


  下面演示幾個(gè)例子,來說明 TextSelection 的能力。?


  第一個(gè)例子將演示如何獲取當(dāng)前光標(biāo)所在的方法的名稱,主要通過獲取當(dāng)前光標(biāo)所在位置的?


CodeElement 元素來得到具體的方法信息,通過傳入 CodeElement 的參數(shù)不一致可以獲取不同塊的信息


,包括方法、枚舉、屬性、類、名稱空間等。關(guān)于 vsCMElement 的枚舉請(qǐng)見參考資源[4]。


復(fù)制代碼
1 Sub DemoFunctionInfo()
2 ? ? ? ? Dim selection As TextSelection = DTE.ActiveDocument.Selection
3 ? ? ? ? Dim func As CodeFunction = selection.ActivePoint.CodeElement


(vsCMElement.vsCMElementFunction)
4 ? ? ? ? If Not func Is Nothing Then
5 ? ? ? ? ? ? MsgBox(func.Name)
6 ? ? ? ? End If
7 End Sub
復(fù)制代碼
?
動(dòng)畫演示:顯示方法名

  第二個(gè)示例,演示如何在光標(biāo)位置所在的行上下加上Region。

復(fù)制代碼
?1 ? ? Sub DemoRegion()
?2 ?
?3 ? ? ? ? '獲取 TextSelection 實(shí)例
?4 ? ? ? ? Dim selection As TextSelection = DTE.ActiveDocument.Selection
?5 ?
?6 ? ? ? ? '移動(dòng)到當(dāng)前光標(biāo)所在行的最前面
?7 ? ? ? ? selection.StartOfLine()
?8 ? ? ? ? '在該位置插入一個(gè)新行,相當(dāng)于按了下回車
?9 ? ? ? ? selection.NewLine()
10 ? ? ? ? '將光標(biāo)移回到新行
11 ? ? ? ? selection.LineUp()
12 ? ? ? ? '在當(dāng)前光標(biāo)所在的位置開始輸入文字
13 ? ? ? ? selection.Text = "#region start"
14 ?
15 ? ? ? ? '將光標(biāo)移動(dòng)到下一行
16 ? ? ? ? selection.LineDown()
17 ? ? ? ? '將光標(biāo)移動(dòng)到行末
18 ? ? ? ? selection.EndOfLine()
19 ? ? ? ? '回車
20 ? ? ? ? selection.NewLine()
21 ? ? ? ? selection.Text = "#endregion"
22 ?
23 ? ? ? ? '格式化
24 ? ? ? ? selection.SmartFormat()
25 ?
26 ? ? End Sub
復(fù)制代碼


動(dòng)畫演示:在特定行的上下添加region




  再來看一個(gè)示例,用戶輸入起始和結(jié)束文字,然后自動(dòng)選中位于這兩個(gè)起始結(jié)束標(biāo)記之間的一段文


本。


復(fù)制代碼
?1 ? ? Sub DemoSelectTextRange()
?2 ? ? ? ? ?
?3 ? ? ? ? '獲取 TextSelection
?4 ? ? ? ? Dim selection As TextSelection = DTE.ActiveDocument.Selection
?5 ? ? ? ? Dim startLine As Integer
?6 ? ? ? ? Dim startLineOffset As Integer
?7 ? ? ? ? Dim startPoint As TextPoint
?8 ? ? ? ? Dim endLine As Integer
?9 ? ? ? ? Dim endLineOffset As Integer
10 ?
11 ? ? ? ? DTE.Find.Action = vsFindAction.vsFindActionFind
12 ? ? ? ? DTE.Find.MatchCase = False
13 ?
14 ? ? ? ? '-------------- 找到起始的文字 ----------------------
15 ? ? ? ? Dim input = InputBox("Enter a word to find as the start tag")
16 ? ? ? ? If input = "" Then
17 ? ? ? ? ? ? Exit Sub
18 ? ? ? ? End If
19 ?
20 ? ? ? ? DTE.Find.FindWhat = input
21 ? ? ? ? Dim result As vsFindResult = DTE.Find.Execute()
22 ? ? ? ? If result <> vsFindResult.vsFindResultFound Then
23 ? ? ? ? ? ? Exit Sub
24 ? ? ? ? End If
25 ?
26 ? ? ? ? startLineOffset = selection.BottomPoint.LineCharOffset
27 ? ? ? ? startLine = selection.BottomPoint.Line
28 ? ? ? ? '-----------------------------------------------------
29 ?
30 ? ? ? ? '--------------- 找到結(jié)束的文字 ----------------------
31 ? ? ? ? input = InputBox("Enter a word to find as the end tag")
32 ? ? ? ? If input = "" Then
33 ? ? ? ? ? ? Exit Sub
34 ? ? ? ? End If
35 ?
36 ? ? ? ? DTE.Find.FindWhat = input
37 ? ? ? ? result = DTE.Find.Execute()
38 ? ? ? ? If result <> vsFindResult.vsFindResultFound Then
39 ? ? ? ? ? ? Exit Sub
40 ? ? ? ? End If
41 ?
42 ? ? ? ? endLine = selection.TopPoint.Line
43 ? ? ? ? endLineOffset = selection.TopPoint.LineCharOffset
44 ? ? ? ? '-----------------------------------------------------
45 ?
46 ? ? ? ? '------------- 遍歷,記錄經(jīng)過的字符數(shù)用于選中 --------
47 ? ? ? ? Dim index As Integer
48 ? ? ? ? Dim len As Integer = 0
49 ?
50 ? ? ? ? selection.GotoLine(startLine)
51 ? ? ? ? len += selection.ActivePoint.LineLength - startLineOffset
52 ? ? ? ? For index = startLine + 1 To endLine - 1
53 ? ? ? ? ? ? selection.GotoLine(index)
54 ? ? ? ? ? ? len += selection.ActivePoint.LineLength
55 ? ? ? ? Next
56 ? ? ? ? selection.GotoLine(endLine)
57 ? ? ? ? len += endLineOffset
58 ? ? ? ? '-----------------------------------------------------
59 ?
60 ? ? ? ? '設(shè)置起始位置
61 ? ? ? ? selection.MoveToLineAndOffset(startLine, startLineOffset)
62 ? ? ? ? 'True 表示鼠標(biāo)跟隨移動(dòng),len 表示要移動(dòng)的字符數(shù)
63 ? ? ? ? selection.CharRight(True, len)
64 ?
65 ? ? End Sub
復(fù)制代碼
?
動(dòng)畫演示:選中一段文本


EditPoint


  Visual Studio 除了在代碼編輯窗口中會(huì)保留代碼,還有一個(gè)叫代碼緩沖區(qū)的地方(用戶是看不到


的)也會(huì)保留代碼,但這個(gè)緩沖區(qū)中的代碼不受自動(dòng)換行和虛擬空格的影響。前面我們說過?


TextSelection 只能有一個(gè),那如果開發(fā)人員事先選中了一行代碼,而我們又在宏中不小心改變了這個(gè)?


TextSelection,那就會(huì)導(dǎo)致用戶的選中被丟失。另外,EditPoint提供了一些TextSelection所不具備的


操作能力。比如剪切一段文本,使用 EditPoint 的 Cut 方法只要設(shè)置起始位置然后直接傳入結(jié)束的位


置給 Cut 方法就可以完成,但是如果使用 TextSelection ,因?yàn)樗?Cut 不帶參數(shù),所以就必須先選


中這段文本才能使用 Cut 方法。




  這里補(bǔ)充一個(gè)小知識(shí)點(diǎn),什么是虛擬空格?這個(gè)東東默認(rèn)是關(guān)閉的,在 Visual Studio 開發(fā)的時(shí)候


也很少用。一般我們?cè)趯懘a的時(shí)候,如果在一行的結(jié)尾處使用小鍵盤向右繼續(xù)移動(dòng)的話,光標(biāo)很快就


會(huì)自動(dòng)跳轉(zhuǎn)到下一行。如果開啟之后,則永遠(yuǎn)不會(huì)自動(dòng)跳轉(zhuǎn)到下一行,你可以在任意一個(gè)位置進(jìn)行編輯


。開啟的方式:工具 / 選項(xiàng) / 文本編輯器 / 所有語言 -> 啟用虛擬空格。


  所以如果你在項(xiàng)目中會(huì)存在自動(dòng)換行或開啟了虛擬空格,那么想要精準(zhǔn)的控制編輯器,還是使用?


EditPoint 吧。


  下面一樣舉個(gè)例子來講解。該示例將把一個(gè)方法的位置進(jìn)行移動(dòng),思路就是先剪切,然后粘貼。


復(fù)制代碼
?1 ? ?Sub DemoCut()
?2 ? ? ? ? Dim selection As TextSelection = DTE.ActiveDocument.Selection
?3 ? ? ? ? '獲取editPointer
?4 ? ? ? ? Dim edit = selection.ActivePoint.CreateEditPoint
?5 ? ? ? ? '獲取 方法
?6 ? ? ? ? Dim func As CodeFunction = selection.ActivePoint.CodeElement


(vsCMElement.vsCMElementFunction)
?7 ? ? ? ? If Not func Is Nothing Then
?8 ? ? ? ? ? ? edit.MoveToPoint(func.StartPoint)
?9 ? ? ? ? ? ? edit.Cut(func.EndPoint)
10 ?
11 ? ? ? ? ? ? edit.MoveToLineAndOffset(20, 1)
12 ? ? ? ? ? ? edit.Paste()
13 ? ? ? ? End If
14 ? ? End Sub
復(fù)制代碼
?
動(dòng)畫演示:如何剪貼一個(gè)方法


Have a try


  辛苦了,看到這里實(shí)在不容易。既然已經(jīng)看到這了,何不來嘗試著自己寫一個(gè)呢?回到開頭的兩個(gè)


示例,看看能不能寫出來了。答案請(qǐng)兇猛的點(diǎn)擊這里。


?
參考資源


  [1] 自動(dòng)化與擴(kuò)展性參考


  [2] Find 接口


  [3] 如何:控制代碼編輯器 (Visual Basic)


  [4] vsCMElement 枚舉
?


  本文來源于 《Visual Studio 宏的高級(jí)用法》


========

使用Visual Studio 2005 IDE的宏,自動(dòng)為c#變量生成屬性



在編寫c#代碼過程中,我們經(jīng)常需要做一些重復(fù)枯燥的工作。例如,編寫DTO(數(shù)據(jù)訪問對(duì)象),通常就


是為一個(gè)類定義一系列的變量和屬性。


有一些第三方的IDE輔助工具,可以為我們生成一些代碼,減少工作量。例如,Assist X就是一款很值得


推薦的工具,使用其提供的Encapsulate Field功能,可以很方便地將一個(gè)類地編寫封裝為屬性。


我今天需要介紹的如何使用Visual Studio 2005 IDE中自帶的宏實(shí)現(xiàn)類似的功能。


打開Visual Studio 2005 IDE,選擇“工具” > "宏" > “宏 IDE”,選擇“添加模塊”。例如,我是


在MyMacros項(xiàng)目中新增了一個(gè)EditorHelper模塊,代碼如下:


Imports System
Imports EnvDTE
Imports EnvDTE80
Imports System.Diagnostics
Public Module EditorHelper
? ? '為一個(gè)參數(shù)封裝一般屬性訪問器
? ? Public Sub EncapsulateField()
? ? ? ? Dim projectItem As ProjectItem = DTE.ActiveDocument.ProjectItem
? ? ? ? Dim fileCodeModel As FileCodeModel = projectItem.FileCodeModel


? ? ? ? '得到當(dāng)前選定的內(nèi)容
? ? ? ? Dim selectText As TextSelection = DTE.ActiveDocument.Selection
? ? ? ? '獲取到當(dāng)前光標(biāo)的位置
? ? ? ? Dim point As TextPoint = selectText.ActivePoint


? ? ? ? Try
? ? ? ? ? ? Dim codeElement As CodeElement = fileCodeModel.CodeElementFromPoint(point,?


vsCMElement.vsCMElementVariable)


? ? ? ? ? ? If (codeElement Is Nothing) Then
? ? ? ? ? ? ? ? Return
? ? ? ? ? ? End If


? ? ? ? ? ? Debug.Assert(codeElement.Kind = vsCMElement.vsCMElementVariable)


? ? ? ? ? ? Dim codeVar As CodeVariable = CType(codeElement, CodeVariable)
? ? ? ? ? ? Dim fieldName As String = codeVar.Name
? ? ? ? ? ? Dim codeClass As CodeClass = CType(codeVar.Parent, CodeClass)


? ? ? ? ? ? AddPropertyToClass(codeClass, fieldName, codeVar.Type)
? ? ? ? Catch ex As Exception
? ? ? ? ? ? '吃掉異常,不做處理或者提示
? ? ? ? End Try


? ? End Sub


? ? Public Sub EncapsulateAllFields()
? ? ? ? Dim projectItem As ProjectItem = DTE.ActiveDocument.ProjectItem
? ? ? ? Dim fileCodeModel As FileCodeModel = projectItem.FileCodeModel


? ? ? ? Try
? ? ? ? ? ? '得到當(dāng)前選定的內(nèi)容
? ? ? ? ? ? Dim selectText As TextSelection = DTE.ActiveDocument.Selection
? ? ? ? ? ? '獲取到當(dāng)前光標(biāo)的位置
? ? ? ? ? ? Dim point As TextPoint = selectText.ActivePoint


? ? ? ? ? ? Dim codeElement As CodeElement = fileCodeModel.CodeElementFromPoint(point,?


vsCMElement.vsCMElementClass)
? ? ? ? ? ? Dim codeClass As CodeClass = CType(codeElement, CodeClass)


? ? ? ? ? ? Dim i As Integer
? ? ? ? ? ? For i = 1 To codeClass.Members.Count
? ? ? ? ? ? ? ? '如果屬性已經(jīng)定義,會(huì)拋出異常
? ? ? ? ? ? ? ? '在這里處理異常,即使新增的屬性已經(jīng)定義,也可以繼續(xù)處理下面的代碼
? ? ? ? ? ? ? ? Try
? ? ? ? ? ? ? ? ? ? Dim element As CodeElement = codeClass.Members.Item(i)
? ? ? ? ? ? ? ? ? ? If (element.Kind = vsCMElement.vsCMElementVariable) Then
? ? ? ? ? ? ? ? ? ? ? ? Dim codeVariable As CodeVariable = CType(element, CodeVariable)
? ? ? ? ? ? ? ? ? ? ? ? If (Not codeVariable.IsShared) Then ? ? '靜態(tài)變量不需要增加屬性
? ? ? ? ? ? ? ? ? ? ? ? ? ? AddPropertyToClass(codeClass, codeVariable.Name,?


codeVariable.Type)
? ? ? ? ? ? ? ? ? ? ? ? End If
? ? ? ? ? ? ? ? ? ? End If
? ? ? ? ? ? ? ? Catch ex As Exception
? ? ? ? ? ? ? ? ? ? '吃掉異常
? ? ? ? ? ? ? ? End Try
? ? ? ? ? ? Next
? ? ? ? Catch ex As Exception
? ? ? ? ? ? '可能并沒有選擇有效的類定義,這時(shí)會(huì)拋出異常,忽略
? ? ? ? End Try
? ? End Sub


? ? '根據(jù)成員的名稱的類型,在類對(duì)象中插入屬性
? ? Private Sub AddPropertyToClass(ByVal codeClass As CodeClass, ByVal fieldName As String,?


ByVal fieldType As Object)
? ? ? ? '生成屬性的名稱,規(guī)則是首先字母大寫。如果變量的開頭為“_”,移除
? ? ? ? Dim propertyName As String = fieldName
? ? ? ? If (propertyName.StartsWith("_")) Then
? ? ? ? ? ? propertyName = propertyName.TrimStart("_"c)
? ? ? ? End If
? ? ? ? propertyName = propertyName.Substring(0, 1).ToUpper() & propertyName.Substring(1)


? ? ? ? '創(chuàng)建屬性對(duì)象
? ? ? ? '-1表示代碼插入到類的最下方
? ? ? ? 'vsCMAccess.vsCMAccessPublic表示為public
? ? ? ? Dim codeProperty As CodeProperty = codeClass.AddProperty(propertyName,?


propertyName, fieldType, -1, vsCMAccess.vsCMAccessPublic)
? ? ? ? 'Getter
? ? ? ? Dim getter As CodeFunction = codeProperty.Getter
? ? ? ? Dim getterPoint As TextPoint = getter.GetStartPoint(vsCMPart.vsCMPartBody)
? ? ? ? Dim getterEditPoint As EditPoint = getterPoint.CreateEditPoint()
? ? ? ? getterEditPoint.Delete(getter.GetEndPoint(vsCMPart.vsCMPartBody))
? ? ? ? getterEditPoint.Insert(vbCrLf) ? ? ?'插入回車符
? ? ? ? getterEditPoint.LineUp()
? ? ? ? getterEditPoint.Indent(, 4) ? ? ? ? '縮進(jìn)4個(gè)位置
? ? ? ? getterEditPoint.Insert("return " & fieldName & ";")
? ? ? ? 'Setter
? ? ? ? Dim setter As CodeFunction = codeProperty.Setter
? ? ? ? Dim setterPoint As TextPoint = setter.GetStartPoint(vsCMPart.vsCMPartBody)
? ? ? ? Dim setterEditPoint As EditPoint = setterPoint.CreateEditPoint()
? ? ? ? setterEditPoint.Insert(vbCrLf) ? ? '插入回車符
? ? ? ? setterEditPoint.LineUp()
? ? ? ? setterEditPoint.Indent(, 4) ? ? ? ? '縮進(jìn)4個(gè)位置
? ? ? ? setterEditPoint.Insert(fieldName & " = value;")
? ? End Sub
End Module


我定義了兩個(gè)Public方法:EncapsulateField和EncapsulateAllFields,分別用于為類的一個(gè)變量封裝


屬性,或者為類中所有的變量(非靜態(tài))封裝屬性。


使用上面的宏的方法很簡(jiǎn)單,選擇“工具”>“宏”>“宏資源管理器”就可以看到我們已經(jīng)創(chuàng)建的宏方


法,如下圖所示:




假如你已經(jīng)編寫了這樣一段代碼:


using System;
using System.Collections.Generic;
using System.Text;
namespace Demo
{
? ? public class Person
? ? {
? ? ? ? private int _id;
? ? ? ? private string _name;
? ? ? ? private DateTime _birthDay;
? ? }
}


將光標(biāo)移到“_name”變量上,然后雙擊“EncapsulateField”宏,就運(yùn)行了該宏。運(yùn)行后,你可以得到


這樣的代碼:


using System;
using System.Collections.Generic;
using System.Text;
namespace Demo
{
? ? public class Person
? ? {
? ? ? ? private int _id;
? ? ? ? private string _name;
? ? ? ? private DateTime _birthDay;


? ? ? ? public string Name
? ? ? ? {
? ? ? ? ? ? get
? ? ? ? ? ? {
? ? ? ? ? ? ? ? return _name;
? ? ? ? ? ? }
? ? ? ? ? ? set
? ? ? ? ? ? {
? ? ? ? ? ? ? ? _name = value;
? ? ? ? ? ? }
? ? ? ? }
? ? }
}


可以看到“EncapsulateField”宏已經(jīng)為private string _name;創(chuàng)建了相應(yīng)的屬性。
EncapsulateAllFields宏只需要將光標(biāo)放在Person類的代碼區(qū)域中,就可以正常執(zhí)行。例如針對(duì)上面的


代碼,EncapsulateAllFields后可以為Person類中的每一個(gè)變量都生成相應(yīng)的屬性。(注:上面的代碼


中Name屬性已經(jīng)有定義,所有試圖再添加Name屬性時(shí)會(huì)拋出異常,在EncapsulateAllFields宏定義中,


已經(jīng)將該異常吃掉,所以,可以正確地為所有變量生成屬性)。運(yùn)行后的代碼如下:


using System;
using System.Collections.Generic;
using System.Text;
namespace Demo
{
? ? public class Person
? ? {
? ? ? ? private int _id;
? ? ? ? private string _name;
? ? ? ? private DateTime _birthDay;


? ? ? ? public string Name
? ? ? ? {
? ? ? ? ? ? get
? ? ? ? ? ? {
? ? ? ? ? ? ? ? return _name;
? ? ? ? ? ? }
? ? ? ? ? ? set
? ? ? ? ? ? {
? ? ? ? ? ? ? ? _name = value;
? ? ? ? ? ? }
? ? ? ? }


? ? ? ? public int Id
? ? ? ? {
? ? ? ? ? ? get
? ? ? ? ? ? {
? ? ? ? ? ? ? ? return _id;
? ? ? ? ? ? }
? ? ? ? ? ? set
? ? ? ? ? ? {
? ? ? ? ? ? ? ? _id = value;
? ? ? ? ? ? }
? ? ? ? }


? ? ? ? public System.DateTime BirthDay
? ? ? ? {
? ? ? ? ? ? get
? ? ? ? ? ? {
? ? ? ? ? ? ? ? return _birthDay;
? ? ? ? ? ? }
? ? ? ? ? ? set
? ? ? ? ? ? {
? ? ? ? ? ? ? ? _birthDay = value;
? ? ? ? ? ? }
? ? ? ? }
? ? }
}


在確認(rèn)上面的宏可以正確運(yùn)行的情況下,我們還可以為其定義快捷鍵,進(jìn)一步提高我們的工作效率。
在Visual Studio 2005 IDE中選擇“工具” > “選項(xiàng)”


在“選項(xiàng)”對(duì)話框中選擇“環(huán)境”>“鍵盤”。
在【顯示命令包含】中輸入Encap...,可以幫你快速定位到相應(yīng)的宏命令;
【新快捷鍵用于】選項(xiàng)中選擇“文本編輯器”;
激活【按快捷鍵】輸入框,選擇你所希望的快捷鍵,例如我這里為EncapsulateField定義的快捷鍵


為“Ctrl + `”,為EncapsulateAllFields定義的快捷鍵為“Ctrl + Shift + `”
點(diǎn)擊分配按鈕


你就可以在文本編輯器中盡情享用宏給你帶來的方便。


補(bǔ)充在Visual Studio 2003中使用的宏:
Visual Studio 2003 IDE與Visual Studio 2005 IDE在處理上稍微有些不一致的地方,需要做如下的調(diào)


整:


Imports System
Imports EnvDTE
Imports System.Diagnostics
Public Module EditorHelper
? ? '為一個(gè)參數(shù)封裝一般屬性訪問器
? ? Public Sub EncapsulateField()
? ? ? ? Dim projectItem As ProjectItem = DTE.ActiveDocument.ProjectItem
? ? ? ? Dim fileCodeModel As FileCodeModel = projectItem.FileCodeModel


? ? ? ? '得到當(dāng)前選定的內(nèi)容
? ? ? ? Dim selectText As TextSelection = DTE.ActiveDocument.Selection
? ? ? ? '獲取到當(dāng)前光標(biāo)的位置
? ? ? ? Dim point As TextPoint = selectText.ActivePoint


? ? ? ? Try
? ? ? ? ? ? Dim codeElement As CodeElement = fileCodeModel.CodeElementFromPoint(point,?


vsCMElement.vsCMElementVariable)


? ? ? ? ? ? If (codeElement Is Nothing) Then
? ? ? ? ? ? ? ? Return
? ? ? ? ? ? End If


? ? ? ? ? ? Debug.Assert(codeElement.Kind = vsCMElement.vsCMElementVariable)


? ? ? ? ? ? Dim codeVar As CodeVariable = CType(codeElement, CodeVariable)
? ? ? ? ? ? Dim fieldName As String = codeVar.Name
? ? ? ? ? ? Dim codeClass As CodeClass = CType(codeVar.Parent, CodeClass)


? ? ? ? ? ? AddPropertyToClass(codeClass, fieldName, codeVar.Type)
? ? ? ? Catch ex As Exception
? ? ? ? ? ? '吃掉異常,不做處理或者提示
? ? ? ? ? ? MsgBox(ex.Message)
? ? ? ? End Try


? ? End Sub


? ? Public Sub EncapsulateAllFields()
? ? ? ? Dim projectItem As ProjectItem = DTE.ActiveDocument.ProjectItem
? ? ? ? Dim fileCodeModel As FileCodeModel = projectItem.FileCodeModel


? ? ? ? Try
? ? ? ? ? ? '得到當(dāng)前選定的內(nèi)容
? ? ? ? ? ? Dim selectText As TextSelection = DTE.ActiveDocument.Selection
? ? ? ? ? ? '獲取到當(dāng)前光標(biāo)的位置
? ? ? ? ? ? Dim point As TextPoint = selectText.ActivePoint


? ? ? ? ? ? Dim codeElement As CodeElement = fileCodeModel.CodeElementFromPoint(point,?


vsCMElement.vsCMElementClass)
? ? ? ? ? ? Dim codeClass As CodeClass = CType(codeElement, CodeClass)


? ? ? ? ? ? Dim i As Integer
? ? ? ? ? ? For i = 1 To codeClass.Members.Count
? ? ? ? ? ? ? ? '如果屬性已經(jīng)定義,會(huì)拋出異常
? ? ? ? ? ? ? ? '在這里處理異常,即使新增的屬性已經(jīng)定義,也可以繼續(xù)處理下面的代碼
? ? ? ? ? ? ? ? Try
? ? ? ? ? ? ? ? ? ? Dim element As CodeElement = codeClass.Members.Item(i)
? ? ? ? ? ? ? ? ? ? If (element.Kind = vsCMElement.vsCMElementVariable) Then
? ? ? ? ? ? ? ? ? ? ? ? Dim codeVariable As CodeVariable = CType(element, CodeVariable)
? ? ? ? ? ? ? ? ? ? ? ? If (Not codeVariable.IsShared) Then ? ? '靜態(tài)變量不需要增加屬性
? ? ? ? ? ? ? ? ? ? ? ? ? ? AddPropertyToClass(codeClass, codeVariable.Name,?


codeVariable.Type)
? ? ? ? ? ? ? ? ? ? ? ? End If
? ? ? ? ? ? ? ? ? ? End If
? ? ? ? ? ? ? ? Catch ex As Exception
? ? ? ? ? ? ? ? ? ? '吃掉異常
? ? ? ? ? ? ? ? End Try
? ? ? ? ? ? Next
? ? ? ? Catch ex As Exception
? ? ? ? ? ? '可能并沒有選擇有效的類定義,這時(shí)會(huì)拋出異常,忽略
? ? ? ? ? ? MsgBox(ex.Message)
? ? ? ? End Try
? ? End Sub


? ? '根據(jù)成員的名稱的類型,在類對(duì)象中插入屬性
? ? Private Sub AddPropertyToClass(ByVal codeClass As CodeClass, ByVal fieldName As String,?


ByVal fieldType As Object)
? ? ? ? '生成屬性的名稱,規(guī)則是首先字母大寫。如果變量的開頭為“_”,移除
? ? ? ? Dim propertyName As String = fieldName
? ? ? ? If (propertyName.StartsWith("_")) Then
? ? ? ? ? ? propertyName = propertyName.TrimStart("_"c)
? ? ? ? End If
? ? ? ? propertyName = propertyName.Substring(0, 1).ToUpper() & propertyName.Substring(1)


? ? ? ? '創(chuàng)建屬性對(duì)象
? ? ? ? '-1表示代碼插入到類的最下方
? ? ? ? 'vsCMAccess.vsCMAccessPublic表示為public
? ? ? ? Dim codeProperty As CodeProperty = codeClass.AddProperty(propertyName,?


propertyName, fieldType, -1, vsCMAccess.vsCMAccessPublic)
? ? ? ? 'Getter
? ? ? ? Dim getter As CodeFunction = codeProperty.Getter
? ? ? ? Dim getterPoint As TextPoint = getter.GetStartPoint(vsCMPart.vsCMPartBody)
? ? ? ? Dim getterEditPoint As EditPoint = getterPoint.CreateEditPoint()
? ? ? ? getterEditPoint.Delete(getter.GetEndPoint(vsCMPart.vsCMPartBody))
? ? ? ? getterEditPoint.Insert("get{ return " & fieldName & "; }")
? ? ? ? 'Setter
? ? ? ? Dim setter As CodeFunction = codeProperty.Setter
? ? ? ? Dim setterPoint As TextPoint = setter.GetStartPoint(vsCMPart.vsCMPartBody)
? ? ? ? Dim setterEditPoint As EditPoint = setterPoint.CreateEditPoint()
? ? ? ? setterEditPoint.Delete(setter.GetEndPoint(vsCMPart.vsCMPartBody))
? ? ? ? setterEditPoint.Insert("set{ " & fieldName & " = value; }")
? ? End Sub
End Module


另外,在2003中使用EncapsulateAllFields的宏時(shí),也需要注意一點(diǎn):在使用時(shí),光標(biāo)的應(yīng)該停留在類


定義的空白位置,否則使用Dim codeClass As CodeClass = CType(codeElement, CodeClass)方法不能


正確獲取到類對(duì)象(例如,如果光標(biāo)在構(gòu)造函數(shù)里,獲取到的是構(gòu)造函數(shù)對(duì)象,這點(diǎn)與2005還是有所區(qū)


別的)。
========

使用宏(Macro)擴(kuò)展Visual Studio IDE



雖然有很多工具可以開發(fā).NET程序,但我相信大多數(shù)的開發(fā)人員都是用Visual Studio(簡(jiǎn)稱VS)。VS是


微軟所提供的一款集成開發(fā)工具,其最新版本為VS 2008。


VS使用起來還不錯(cuò),不是嗎?而且它還可以被我們進(jìn)行擴(kuò)展,按照我們自己的需求。這的確是挺誘人的


,對(duì)吧?


認(rèn)真說起來,擴(kuò)展VS的IDE有很多方法,例如你可以通過創(chuàng)建一個(gè)所謂的"Visual Studio外接程序",這


個(gè)外接程序其實(shí)就是一個(gè)實(shí)現(xiàn)了IDTExtensibility2接口的程序集。


t4


關(guān)于外接程序的具體細(xì)節(jié),不是我們這次討論的內(nèi)容。你可以通過下面地址了解


http://msdn2.microsoft.com/zh-cn/library/ms165620(VS.80).aspx
?


外接程序的好處是可以比較集中地封裝大量復(fù)雜的擴(kuò)展,同時(shí)也易于分發(fā)。但相對(duì)來說,所需要的能力


也較高。相對(duì)比而言,另外一個(gè)擴(kuò)展方法——宏擴(kuò)展——?jiǎng)t比較適合輕量級(jí)的擴(kuò)展。它的實(shí)現(xiàn)方式相對(duì)


較為容易。我們下面就以一個(gè)例子來說明如何創(chuàng)建宏,如何運(yùn)行宏,實(shí)現(xiàn)某些有意思的事情。


我們今天要解決的問題是這樣的:


大家知道,每個(gè)解決方案或項(xiàng)目都有一個(gè)相對(duì)應(yīng)的文件目錄。我們經(jīng)常需要定位到這些目錄。以前的做


法是(以項(xiàng)目為例):


1)先選中該項(xiàng)目


2)在它屬性中,復(fù)制它的"項(xiàng)目文件夾"這個(gè)屬性值


3)打開"開始"=>"運(yùn)行"命令,粘貼那個(gè)路徑,然后回車


這些操作沒有什么技術(shù)含量,地球人都知道怎么做。但經(jīng)常這么做,顯然不符合和諧社會(huì)的要求。試想


,如果能在解決方案或者項(xiàng)目的快捷菜單中,就有一個(gè)命令,可以一次性做這樣的事情,那該多好啊


很多事情并不難,尤其是當(dāng)我們以認(rèn)真的態(tài)度正視它的時(shí)候。為了實(shí)現(xiàn)上述要求,我們只需要寫一個(gè)簡(jiǎn)


單的宏。的確如此簡(jiǎn)單!


1)通過ALT+F8 打開宏資源管理器


2)在宏資源管理器中,定位到MyMacros,右鍵中選擇"新建模塊",給新的模塊命名為


ProjectContextMenu或者其他你喜歡的名字。


3)雙擊剛才新建的模塊,把以下的代碼復(fù)制到接下來打開的一個(gè)設(shè)計(jì)器中,并保存。


Imports System
Imports EnvDTE
Imports EnvDTE80
Imports System.Diagnostics
Imports System.IO


'這個(gè)模塊主要是用來為項(xiàng)目添加一些特殊的上下文菜單操作
Public Module ProjectContextMenu
? ? '這個(gè)方法是定位到當(dāng)前項(xiàng)目的目錄
? ? Public Sub NavigateToProjectPath()
? ? ? ? Dim proj As EnvDTE.Project
? ? ? ? proj = DTE.ActiveSolutionProjects(0) '定位到當(dāng)前的項(xiàng)目
? ? ? ? Dim path As String
? ? ? ? path = System.IO.Path.GetDirectoryName(proj.FullName) '取得當(dāng)前項(xiàng)目所在的目錄


? ? ? ? Dim process As New System.Diagnostics.Process
? ? ? ? process.Start("Explorer.exe", path) '打開資源管理器
? ? End Sub


? ? '這個(gè)方法是定位到解決方案的目錄
? ? Public Sub NavigateToSolutionPath()
? ? ? ? Dim sln As EnvDTE.Solution
? ? ? ? sln = DTE.Solution '取得當(dāng)前解決方案
? ? ? ? Dim path As String
? ? ? ? path = System.IO.Path.GetDirectoryName(sln.FullName) '取得當(dāng)前解決方案的目錄
? ? ? ? Dim process As New System.Diagnostics.Process
? ? ? ? process.Start("Explorer.exe", path) '打開資源管理器
? ? End Sub
End Module


這樣我們的宏就做好了,你可以直接執(zhí)行那兩個(gè)方法。看,是不是很神奇呢。它打開了當(dāng)前項(xiàng)目的文件


夾。


t3


當(dāng)然,我們還差最后一步?jīng)]有完成。那就是把這兩個(gè)方法關(guān)聯(lián)到內(nèi)置菜單里面去。


1)你需要通過以下路徑打開自定義工具欄的對(duì)話框。"視圖"=〉"工具欄"==〉"自定義"


2)在"自定義"對(duì)話框中,選中"上下文菜單",你會(huì)發(fā)現(xiàn)所有內(nèi)置的快捷菜單都顯示在頂部了


t7


3)把兩個(gè)宏方法拖拽到相應(yīng)的快捷菜單里面去


t6?


下面是配置好之后的效果:多出了兩個(gè)菜單,分別都指向了上面寫好的兩個(gè)方法。單擊這個(gè)菜單,就可


以很方便地定位到項(xiàng)目或者解決方案的根目錄,免去了復(fù)制,然后粘貼到運(yùn)行窗口的勞動(dòng)。


t1 t


?
附加資源:


Visual Studio自動(dòng)化對(duì)象模型。如果確實(shí)有興趣的朋友可以認(rèn)真看一下(要想寫出高質(zhì)量的VS IDE擴(kuò)展


程序或插件,必須對(duì)該模型有較深入的認(rèn)識(shí))


Vs自動(dòng)化模型圖


如果你的機(jī)器上裝好了MSDN,那么也可以通過下面的導(dǎo)航,了解到更加詳細(xì)的信息


ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_extcore/html/4173a963-7ac7-


4966-9bb7-e28a9d9f6792.htm
?


最后,你還可以下載VS Sdk進(jìn)行更加深入的了解


http://download.microsoft.com/download/9/a/1/9a1b39c4-cf38-4e40-b0b8-


aac1b34fc70a/VsSDKFebruary2007.exe


分類: 其他,Microsoft .NET
========

Visual Studio 宏

https://msdn.microsoft.com/zh-cn/library/b4c73967(v=vs.100).aspx
Visual Studio 2010 其他版本?
宏是組合到一起形成一個(gè)命令以自動(dòng)完成某項(xiàng)任務(wù)的一系列命令和指令。 宏允許自動(dòng)重復(fù)操作。?


Visual Studio 包括宏集成開發(fā)環(huán)境 (IDE),該開發(fā)環(huán)境專門用于創(chuàng)建、操作、編輯和運(yùn)行宏。 宏 IDE?


與 Visual Studio IDE 相互獨(dú)立。
本節(jié)內(nèi)容
如何:錄制宏
描述如何創(chuàng)建和錄制宏。
如何:運(yùn)行宏
討論各種運(yùn)行宏和傳遞參數(shù)的方法。
宏的錄制和運(yùn)行問題
提供錄制和運(yùn)行宏時(shí)的常見問題的解決方案。
如何:管理宏
描述如何編輯現(xiàn)有宏或手動(dòng)創(chuàng)建新宏。
調(diào)試宏
討論在宏中出現(xiàn)錯(cuò)誤時(shí)的解決方法。
如何:管理宏
描述宏資源管理器及其上下文菜單。
保存和導(dǎo)出宏文件
描述如何在宏 IDE 中保存和導(dǎo)出宏文件。
宏 IDE 與 Visual Studio IDE 之間的功能差異
描述 Visual Studio 宏和 Visual Studio 之間在擴(kuò)展性模型、Document 對(duì)象、屬性、項(xiàng)操作、Find?


方法、項(xiàng)目以及工具選項(xiàng)方面的差異。
如何:在宏中引用 COM 和 .NET Framework 組件
描述如何使用 Tlbimp 實(shí)用工具使 Visual Studio 宏能夠引用 COM 組件。
如何:在宏中處理環(huán)境事件
討論 EnvironmentEvents 模板、OnMacrosRuntimeReset 事件和 OnStartupComplete 事件。
宏安全性和共享問題
討論與宏有關(guān)的主要安全問題:知識(shí)產(chǎn)權(quán)保護(hù)和病毒的預(yù)防與保護(hù)。
宏示例
列出并描述 Visual Studio 中所包括的宏示例。
相關(guān)章節(jié)
使用宏自動(dòng)執(zhí)行重復(fù)性操作
提供對(duì)如何使用宏以使過程或重復(fù)的擊鍵序列自動(dòng)化的概述。
宏開發(fā)環(huán)境
描述宏 IDE 中的所有對(duì)話框。
Macros
提供有關(guān) Macros 對(duì)象的詳細(xì)信息,該對(duì)象表示 Visual Studio 宏記錄器。
Visual Studio Macros Error Messages
列出與 Visual Studio 宏關(guān)聯(lián)的所有錯(cuò)誤消息。
如何:使用外接程序控制宏
描述如何使用 Visual Studio 自動(dòng)化模型的 Macros 對(duì)象來控制在 IDE 中記錄的宏,包括暫停和重新


激活記錄器、向所記錄的宏中寫入代碼以及確定記錄器當(dāng)前是否正在運(yùn)行。
========

讓Visual Studio 也支持JS代碼折疊

? ? ? Visual Studio的代碼折疊功能非常好用,#region #endregion 這個(gè)詞連搜狗的詞庫里面都出現(xiàn)


了(不含'#'號(hào)),可見使用頻率很高,但是他不支持js的代碼折疊 : ( 最近Ext用得比較多,一寫就是上


百行JS代碼,非常不方便,想著自己寫個(gè)擴(kuò)展或插件什么的,意外搜到了下面的文章,已經(jīng)用宏來實(shí)現(xiàn)


了,本文可以理解為該文的簡(jiǎn)單譯本,注意宏代碼部分我有所改動(dòng) : )
?


文章


? ? ? 1. ? ? ?Using #region Directive With JavaScript Files in Visual Studio
?


環(huán)境


? ? ? Microsoft Visual Studio 2008
?


正文


? ? ? 1. ? ? ?打開宏資源管理器:視圖 -> 其他窗口 -> 宏資源管理器


? ? ? 2. ? ? ?創(chuàng)建一個(gè)新模塊
  


  3.  編輯宏:  選中模塊 -> 右鍵編輯

Option Strict Off Option Explicit OffImports System Imports EnvDTE Imports EnvDTE80 Imports System.Diagnostics Imports System.CollectionsPublic Module JsMacrosSub OutlineRegions()Dim selection As EnvDTE.TextSelection = DTE.ActiveDocument.SelectionConst REGION_START As String = "//#region"Const REGION_END As String = "//#endregion"selection.SelectAll()'農(nóng)民伯伯 --- 自動(dòng)為"//#endregion"結(jié)束的代碼添加最后一行,不然出錯(cuò)If selection.Text.EndsWith(REGION_END) Thenselection.EndOfLine()selection.NewLine()selection.SelectAll()End IfDim text As String = selection.Textselection.StartOfDocument(True)Dim startIndex As IntegerDim endIndex As IntegerDim lastIndex As Integer = 0Dim startRegions As Stack = New Stack()DostartIndex = text.IndexOf(REGION_START, lastIndex)endIndex = text.IndexOf(REGION_END, lastIndex)If startIndex = -1 AndAlso endIndex = -1 ThenExit DoEnd IfIf startIndex <> -1 AndAlso startIndex < endIndex ThenstartRegions.Push(startIndex)lastIndex = startIndex + 1Else' Outline region selection.MoveToLineAndOffset(CalcLineNumber(text, CInt(startRegions.Pop())), 1)selection.MoveToLineAndOffset(CalcLineNumber(text, endIndex) + 1, 1, True)selection.OutlineSection()lastIndex = endIndex + 1End IfLoopselection.StartOfDocument()End SubPrivate Function CalcLineNumber(ByVal text As String, ByVal index As Integer)Dim lineNumber As Integer = 1Dim i As Integer = 0While i < indexIf text.Chars(i) = vbCr ThenlineNumber += 1i += 1End Ifi += 1End WhileReturn lineNumberEnd FunctionEnd Module
    保存即可。這里可以省去新建宏的步驟,他會(huì)根據(jù)代碼自動(dòng)給你生成一個(gè)宏的。

    注意我加的代碼段,如果不加,并且你的JS最后一行為#endregion,宏將報(bào)錯(cuò),顯示“值不在

預(yù)期的范圍內(nèi)”。?
?

  4.  設(shè)置快捷鍵

    4.1  工具 -> 選項(xiàng) - > 環(huán)境 -> 鍵盤

    4.2  在顯示命令包含下面的文本框中輸入宏名outli,不用輸全,下面能顯示你新建的宏

    4.3  點(diǎn)一下 按快捷鍵 下面的文本框, 然后自定義快捷鍵組合,我定義的是Ctrl+M,Ctrl+J

,點(diǎn)分配(別忘了!),點(diǎn)確定。
?
  5.效果

    5.1  輸入代碼:


//aasdsadsad

//#region
//#endregion
    5.2  快捷鍵Ctrl+M,Ctrl+J啟動(dòng)宏,能看到系統(tǒng)的右下角顯示可愛的小方塊在轉(zhuǎn)動(dòng),js編輯

框顯示效果如下:
  ?

    5.3  之后就可以用快捷鍵Ctrl+M,Ctrl+L來[展開/折疊]代碼了,注意關(guān)閉之后重新打開需要


再啟動(dòng)一次宏,展開效果如下:

========

msdn相關(guān)鏈接

https://msdn.microsoft.com/zh-cn/library/aa291605(v=vs.71).aspx

debugger對(duì)象


https://msdn.microsoft.com/zh-cn/library/aa291105(v=vs.71).aspx

公共環(huán)境對(duì)象模型


https://msdn.microsoft.com/zh-cn/library/68shb4dw(VS.80).aspx

https://msdn.microsoft.com/zh-cn/library/aa301306(v=vs.71).aspx

https://msdn.microsoft.com/zh-cn/library/aa300755

總結(jié)

以上是生活随笔為你收集整理的VS 2010 IDE 宏学习总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

久久久久se色偷偷亚洲精品av | 亚洲人成网站色7799 | 精品少妇爆乳无码av无码专区 | 麻豆av传媒蜜桃天美传媒 | 亚洲一区二区三区香蕉 | 少妇无套内谢久久久久 | 青草视频在线播放 | 亚洲 高清 成人 动漫 | 中文字幕乱码人妻二区三区 | 色窝窝无码一区二区三区色欲 | 亚洲自偷自拍另类第1页 | 人妻与老人中文字幕 | 日韩视频 中文字幕 视频一区 | 国产香蕉97碰碰久久人人 | 东京热一精品无码av | 在线天堂新版最新版在线8 | 国产女主播喷水视频在线观看 | 娇妻被黑人粗大高潮白浆 | 在线欧美精品一区二区三区 | 欧美乱妇无乱码大黄a片 | 欧美丰满老熟妇xxxxx性 | 国产精品久久久 | 夜精品a片一区二区三区无码白浆 | 爆乳一区二区三区无码 | 亚洲 激情 小说 另类 欧美 | 97无码免费人妻超级碰碰夜夜 | 国产9 9在线 | 中文 | 日本va欧美va欧美va精品 | 四虎影视成人永久免费观看视频 | 国产一区二区三区精品视频 | 久久精品国产亚洲精品 | 免费无码的av片在线观看 | 偷窥村妇洗澡毛毛多 | 狠狠色噜噜狠狠狠7777奇米 | 国产精品对白交换视频 | 国产97人人超碰caoprom | 亚洲一区二区三区含羞草 | 爽爽影院免费观看 | 日韩人妻系列无码专区 | 精品乱码久久久久久久 | 亚洲欧洲日本无在线码 | 亚洲成色在线综合网站 | 亚洲精品中文字幕久久久久 | 午夜精品一区二区三区的区别 | 日韩成人一区二区三区在线观看 | 精品国产一区二区三区四区在线看 | 国产成人一区二区三区在线观看 | 精品 日韩 国产 欧美 视频 | 18无码粉嫩小泬无套在线观看 | 国产亚洲美女精品久久久2020 | 亚洲区小说区激情区图片区 | 成熟妇人a片免费看网站 | 精品aⅴ一区二区三区 | 4hu四虎永久在线观看 | 野外少妇愉情中文字幕 | 狠狠亚洲超碰狼人久久 | 蜜臀av无码人妻精品 | 亚洲乱亚洲乱妇50p | 国产精品.xx视频.xxtv | 久久久精品欧美一区二区免费 | 亚洲精品久久久久avwww潮水 | 久久99精品久久久久婷婷 | 99精品视频在线观看免费 | 无码午夜成人1000部免费视频 | 国产精品久久福利网站 | 亚洲综合精品香蕉久久网 | 丰满护士巨好爽好大乳 | 中文字幕乱妇无码av在线 | 中文字幕+乱码+中文字幕一区 | 人妻插b视频一区二区三区 | 亚洲阿v天堂在线 | 成熟女人特级毛片www免费 | yw尤物av无码国产在线观看 | 成人性做爰aaa片免费看 | 波多野结衣一区二区三区av免费 | 丰满少妇人妻久久久久久 | 国产又爽又猛又粗的视频a片 | 无码国产乱人伦偷精品视频 | 国产人成高清在线视频99最全资源 | 丰满少妇熟乱xxxxx视频 | 免费乱码人妻系列无码专区 | 俺去俺来也在线www色官网 | 久久亚洲日韩精品一区二区三区 | 久久无码人妻影院 | 97夜夜澡人人爽人人喊中国片 | 青青久在线视频免费观看 | 熟妇激情内射com | 国产精品丝袜黑色高跟鞋 | 国产精品久久久久久亚洲毛片 | 国产午夜无码视频在线观看 | 300部国产真实乱 | 欧美激情内射喷水高潮 | 三级4级全黄60分钟 | 国产乡下妇女做爰 | 亚洲日韩精品欧美一区二区 | 亚洲人成影院在线无码按摩店 | 日韩亚洲欧美精品综合 | 国产无遮挡又黄又爽免费视频 | 中文字幕无码免费久久9一区9 | 性做久久久久久久久 | 日本欧美一区二区三区乱码 | 亚洲日本在线电影 | 西西人体www44rt大胆高清 | 秋霞特色aa大片 | 精品无码成人片一区二区98 | 青草视频在线播放 | 国产热a欧美热a在线视频 | 欧美高清在线精品一区 | 东京一本一道一二三区 | 美女毛片一区二区三区四区 | 久久精品国产精品国产精品污 | 亚洲狠狠色丁香婷婷综合 | 精品日本一区二区三区在线观看 | 国产精品久久久久久久影院 | 国产疯狂伦交大片 | 伊人久久大香线蕉av一区二区 | 国产精品第一国产精品 | 亚洲国产成人a精品不卡在线 | 国产精品理论片在线观看 | 99国产欧美久久久精品 | 久久久久成人片免费观看蜜芽 | 中国女人内谢69xxxxxa片 | 丰满肥臀大屁股熟妇激情视频 | 两性色午夜视频免费播放 | 人人爽人人澡人人人妻 | 大胆欧美熟妇xx | 国产精品-区区久久久狼 | www国产亚洲精品久久网站 | 欧美人妻一区二区三区 | 久久综合给合久久狠狠狠97色 | 永久免费观看美女裸体的网站 | 日日摸夜夜摸狠狠摸婷婷 | 88国产精品欧美一区二区三区 | 天天综合网天天综合色 | 国产色精品久久人妻 | 日本肉体xxxx裸交 | 欧美日韩视频无码一区二区三 | 狂野欧美性猛交免费视频 | 久久久久久av无码免费看大片 | 国产人妻精品午夜福利免费 | 亚洲一区二区三区 | 女人被男人爽到呻吟的视频 | 亚洲精品无码国产 | 久久亚洲中文字幕精品一区 | 亚洲成a人片在线观看无码 | 国产成人亚洲综合无码 | 精品国产av色一区二区深夜久久 | 久久视频在线观看精品 | 蜜桃视频插满18在线观看 | 高清国产亚洲精品自在久久 | 对白脏话肉麻粗话av | 亚洲精品鲁一鲁一区二区三区 | 久久zyz资源站无码中文动漫 | 99久久精品日本一区二区免费 | 国内少妇偷人精品视频免费 | 国产精品二区一区二区aⅴ污介绍 | 学生妹亚洲一区二区 | 亚洲欧美日韩国产精品一区二区 | 国内少妇偷人精品视频 | 日本护士毛茸茸高潮 | 未满成年国产在线观看 | 人人澡人摸人人添 | 日韩 欧美 动漫 国产 制服 | 国产精品毛片一区二区 | 亚洲娇小与黑人巨大交 | 久久99精品国产.久久久久 | 久久午夜无码鲁丝片午夜精品 | 中文无码伦av中文字幕 | 大胆欧美熟妇xx | 又大又硬又黄的免费视频 | 久久国产精品精品国产色婷婷 | 国产欧美亚洲精品a | 女人高潮内射99精品 | 天天拍夜夜添久久精品 | 未满小14洗澡无码视频网站 | 国产精品亚洲专区无码不卡 | 成年美女黄网站色大免费全看 | 青青青手机频在线观看 | 久久久中文字幕日本无吗 | 久久久久se色偷偷亚洲精品av | 麻豆人妻少妇精品无码专区 | 精品aⅴ一区二区三区 | 欧美人与牲动交xxxx | 免费视频欧美无人区码 | 亚洲 激情 小说 另类 欧美 | 中文毛片无遮挡高清免费 | 国产午夜精品一区二区三区嫩草 | 亚洲中文字幕乱码av波多ji | 国产69精品久久久久app下载 | 亚洲а∨天堂久久精品2021 | 久久综合狠狠综合久久综合88 | 久久精品成人欧美大片 | 亚洲の无码国产の无码步美 | 丁香花在线影院观看在线播放 | 青草视频在线播放 | 亚洲国产日韩a在线播放 | 99久久精品午夜一区二区 | 18禁黄网站男男禁片免费观看 | 2020最新国产自产精品 | 亚洲精品中文字幕乱码 | 日本熟妇乱子伦xxxx | 中文字幕人妻丝袜二区 | 狠狠色欧美亚洲狠狠色www | 午夜肉伦伦影院 | 国产极品视觉盛宴 | 日本护士xxxxhd少妇 | 日韩av无码一区二区三区不卡 | 国产激情综合五月久久 | 国产成人精品必看 | 中文字幕无线码 | 亚洲中文字幕成人无码 | 无码帝国www无码专区色综合 | 伊人久久大香线焦av综合影院 | 国产激情艳情在线看视频 | 国产又爽又黄又刺激的视频 | 青青青手机频在线观看 | 免费视频欧美无人区码 | 欧美一区二区三区 | 精品国偷自产在线视频 | 久久99精品久久久久婷婷 | 中文字幕乱妇无码av在线 | 国内精品九九久久久精品 | 国产精品手机免费 | 国产女主播喷水视频在线观看 | 国产精品美女久久久 | 亚洲狠狠婷婷综合久久 | 精品国产乱码久久久久乱码 | 亚洲狠狠色丁香婷婷综合 | 国产高潮视频在线观看 | 亚洲综合另类小说色区 | 少妇人妻大乳在线视频 | 成人综合网亚洲伊人 | 四虎影视成人永久免费观看视频 | 熟妇人妻无码xxx视频 | 亚洲国产欧美在线成人 | 狠狠色噜噜狠狠狠狠7777米奇 | 久久久久免费精品国产 | 亚洲午夜福利在线观看 | 国产精品久久久久无码av色戒 | 97久久精品无码一区二区 | 亚洲国产成人a精品不卡在线 | 免费无码av一区二区 | 天天爽夜夜爽夜夜爽 | 日本精品人妻无码77777 天堂一区人妻无码 | 97久久超碰中文字幕 | 久久综合香蕉国产蜜臀av | 国产人妻精品一区二区三区不卡 | 女人高潮内射99精品 | 少妇无码av无码专区在线观看 | 偷窥村妇洗澡毛毛多 | 国产亚洲精品久久久闺蜜 | 精品亚洲韩国一区二区三区 | 青青青手机频在线观看 | 丰腴饱满的极品熟妇 | 国产精品无码成人午夜电影 | 巨爆乳无码视频在线观看 | 国产综合色产在线精品 | 99久久人妻精品免费一区 | 性欧美牲交xxxxx视频 | 国产成人精品视频ⅴa片软件竹菊 | 久久久无码中文字幕久... | 国产精品欧美成人 | 中文字幕无码免费久久99 | 国产真实伦对白全集 | 日韩av无码一区二区三区 | 久久99精品国产.久久久久 | 俄罗斯老熟妇色xxxx | 丝袜 中出 制服 人妻 美腿 | 成人无码视频在线观看网站 | 午夜精品久久久久久久 | 无码人妻av免费一区二区三区 | 亚洲日韩av一区二区三区四区 | 国产成人精品无码播放 | 国产欧美熟妇另类久久久 | 亚洲大尺度无码无码专区 | 亚洲无人区一区二区三区 | 狠狠综合久久久久综合网 | 又粗又大又硬毛片免费看 | 精品厕所偷拍各类美女tp嘘嘘 | 久久久国产精品无码免费专区 | 久久久久亚洲精品中文字幕 | 国产黑色丝袜在线播放 | 亚洲狠狠婷婷综合久久 | 人人妻人人澡人人爽精品欧美 | 亚洲欧洲日本无在线码 | 97久久超碰中文字幕 | 奇米影视7777久久精品人人爽 | 亚洲色大成网站www | 久久精品中文字幕一区 | 精品厕所偷拍各类美女tp嘘嘘 | av人摸人人人澡人人超碰下载 | 无码乱肉视频免费大全合集 | 亚洲理论电影在线观看 | 午夜无码区在线观看 | 内射爽无广熟女亚洲 | 亚洲中文字幕无码中文字在线 | 中文字幕无码av波多野吉衣 | 给我免费的视频在线观看 | 亚洲国产精品久久久天堂 | 乱码午夜-极国产极内射 | 亚洲精品一区三区三区在线观看 | 欧美 日韩 亚洲 在线 | 国产精品高潮呻吟av久久 | 色综合久久久久综合一本到桃花网 | 小泽玛莉亚一区二区视频在线 | 色综合天天综合狠狠爱 | 麻豆av传媒蜜桃天美传媒 | 久久精品国产精品国产精品污 | 99久久精品国产一区二区蜜芽 | 久久精品国产亚洲精品 | 中文字幕无码日韩专区 | 人人妻人人澡人人爽欧美一区 | yw尤物av无码国产在线观看 | 亚洲人成网站色7799 | 欧美成人家庭影院 | 亚洲精品午夜国产va久久成人 | 欧美熟妇另类久久久久久不卡 | 国产精品99爱免费视频 | 色诱久久久久综合网ywww | 亚洲中文字幕无码中字 | 日韩人妻少妇一区二区三区 | 少妇高潮一区二区三区99 | 久久精品人人做人人综合 | 欧洲vodafone精品性 | 人人澡人摸人人添 | 男人扒开女人内裤强吻桶进去 | 色综合久久久久综合一本到桃花网 | 欧美黑人巨大xxxxx | 久久久中文字幕日本无吗 | 日韩欧美群交p片內射中文 | 国精产品一区二区三区 | 中文字幕无码日韩欧毛 | 无码播放一区二区三区 | 樱花草在线社区www | 色综合久久久无码中文字幕 | 97久久超碰中文字幕 | 国产精品美女久久久久av爽李琼 | 俺去俺来也在线www色官网 | 天堂а√在线中文在线 | 377p欧洲日本亚洲大胆 | 国产凸凹视频一区二区 | 东京一本一道一二三区 | 成人av无码一区二区三区 | 欧美xxxx黑人又粗又长 | 亚洲 高清 成人 动漫 | 天堂无码人妻精品一区二区三区 | 女高中生第一次破苞av | 鲁一鲁av2019在线 | 少妇厨房愉情理9仑片视频 | 久久人妻内射无码一区三区 | 日日橹狠狠爱欧美视频 | 国产99久久精品一区二区 | 乱人伦中文视频在线观看 | 九月婷婷人人澡人人添人人爽 | 久精品国产欧美亚洲色aⅴ大片 | 国产色xx群视频射精 | 国产精品.xx视频.xxtv | 亚洲狠狠婷婷综合久久 | 少妇被黑人到高潮喷出白浆 | 国内少妇偷人精品视频免费 | 麻花豆传媒剧国产免费mv在线 | 鲁大师影院在线观看 | 无码人妻久久一区二区三区不卡 | 亚洲а∨天堂久久精品2021 | 无码福利日韩神码福利片 | 无码国模国产在线观看 | 亚洲欧美中文字幕5发布 | 内射老妇bbwx0c0ck | 麻豆果冻传媒2021精品传媒一区下载 | 亚洲欧美日韩成人高清在线一区 | 日韩av无码一区二区三区不卡 | 亚洲成a人片在线观看无码3d | 亚洲中文字幕无码一久久区 | 奇米影视7777久久精品 | 狠狠色噜噜狠狠狠狠7777米奇 | 久久久亚洲欧洲日产国码αv | 亚洲日本va午夜在线电影 | 在线看片无码永久免费视频 | 国产精品无码一区二区三区不卡 | 色婷婷欧美在线播放内射 | 对白脏话肉麻粗话av | aⅴ亚洲 日韩 色 图网站 播放 | 欧美黑人性暴力猛交喷水 | 欧美人妻一区二区三区 | 日韩精品无码一本二本三本色 | 人人澡人人透人人爽 | 领导边摸边吃奶边做爽在线观看 | 丝袜人妻一区二区三区 | 成熟人妻av无码专区 | 一本一道久久综合久久 | 日本熟妇大屁股人妻 | 亚洲熟女一区二区三区 | a片免费视频在线观看 | 少妇邻居内射在线 | 人人妻人人澡人人爽人人精品 | 国产人妻精品一区二区三区 | 亚洲国产av精品一区二区蜜芽 | 亚洲国产av精品一区二区蜜芽 | 18黄暴禁片在线观看 | 成人无码精品一区二区三区 | 亚洲无人区午夜福利码高清完整版 | 男女性色大片免费网站 | 欧美变态另类xxxx | 成 人影片 免费观看 | 亚洲中文字幕乱码av波多ji | 国产av一区二区三区最新精品 | 国产无遮挡又黄又爽免费视频 | 精品国偷自产在线视频 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 99久久精品无码一区二区毛片 | 国产国语老龄妇女a片 | 国产成人精品一区二区在线小狼 | 国产无遮挡吃胸膜奶免费看 | 亚洲乱码国产乱码精品精 | 国产午夜手机精彩视频 | 蜜桃视频韩日免费播放 | 国产精品人妻一区二区三区四 | 又粗又大又硬又长又爽 | 无码毛片视频一区二区本码 | 网友自拍区视频精品 | 无码国产色欲xxxxx视频 | 亚洲精品一区二区三区大桥未久 | 欧美日韩视频无码一区二区三 | 欧洲美熟女乱又伦 | 亚洲中文字幕在线观看 | 最近中文2019字幕第二页 | 亚洲国精产品一二二线 | 性色欲情网站iwww九文堂 | 色噜噜亚洲男人的天堂 | 国产欧美精品一区二区三区 | 人人妻人人澡人人爽人人精品 | 免费看男女做好爽好硬视频 | 无码任你躁久久久久久久 | 无码人妻av免费一区二区三区 | 久久久亚洲欧洲日产国码αv | 欧美精品无码一区二区三区 | 大胆欧美熟妇xx | 精品乱子伦一区二区三区 | 欧美人与牲动交xxxx | 欧美第一黄网免费网站 | 一区二区三区乱码在线 | 欧洲 | 国产特级毛片aaaaaa高潮流水 | 2019nv天堂香蕉在线观看 | 无码国模国产在线观看 | 国产手机在线αⅴ片无码观看 | 精品国产乱码久久久久乱码 | 樱花草在线播放免费中文 | 国产人妻精品一区二区三区 | 福利一区二区三区视频在线观看 | 亚洲国产精品无码一区二区三区 | 亚洲大尺度无码无码专区 | 久久久无码中文字幕久... | 中文精品无码中文字幕无码专区 | 永久免费精品精品永久-夜色 | www国产亚洲精品久久久日本 | 欧美国产日产一区二区 | 国产亚av手机在线观看 | 国产av无码专区亚洲a∨毛片 | 国产成人综合在线女婷五月99播放 | 西西人体www44rt大胆高清 | 日韩精品无码一本二本三本色 | 成在人线av无码免观看麻豆 | 色综合久久久久综合一本到桃花网 | 美女毛片一区二区三区四区 | 久久久精品人妻久久影视 | 97久久国产亚洲精品超碰热 | 人人爽人人爽人人片av亚洲 | 丰满岳乱妇在线观看中字无码 | 97精品人妻一区二区三区香蕉 | 亚洲区欧美区综合区自拍区 | 激情亚洲一区国产精品 | 男女猛烈xx00免费视频试看 | 日本成熟视频免费视频 | 亚洲色成人中文字幕网站 | 婷婷丁香六月激情综合啪 | 麻豆果冻传媒2021精品传媒一区下载 | 国产午夜无码视频在线观看 | 国产亚洲精品久久久久久大师 | 国产综合久久久久鬼色 | 中文字幕无码日韩欧毛 | 国产成人一区二区三区在线观看 | 久久精品丝袜高跟鞋 | 精品成在人线av无码免费看 | 日韩在线不卡免费视频一区 | aa片在线观看视频在线播放 | 久久精品人人做人人综合试看 | 亚洲の无码国产の无码步美 | 久久精品中文字幕大胸 | 波多野结衣一区二区三区av免费 | 精品久久8x国产免费观看 | 亚洲爆乳无码专区 | 蜜臀aⅴ国产精品久久久国产老师 | 天天摸天天碰天天添 | 沈阳熟女露脸对白视频 | 国产艳妇av在线观看果冻传媒 | 久久99精品久久久久久动态图 | 精品成人av一区二区三区 | 少妇无码av无码专区在线观看 | 大乳丰满人妻中文字幕日本 | 黑人巨大精品欧美一区二区 | 亚洲码国产精品高潮在线 | 青青青爽视频在线观看 | 日本一卡二卡不卡视频查询 | 大肉大捧一进一出好爽视频 | 色婷婷综合激情综在线播放 | 欧美性生交活xxxxxdddd | 国产va免费精品观看 | 欧美丰满少妇xxxx性 | 激情国产av做激情国产爱 | 久久99精品国产麻豆蜜芽 | 精品久久久无码中文字幕 | 三级4级全黄60分钟 | 国产精品久久久久久亚洲毛片 | 中文毛片无遮挡高清免费 | 久久无码人妻影院 | 国产人妻久久精品二区三区老狼 | 性色欲情网站iwww九文堂 | 在线成人www免费观看视频 | 久久国语露脸国产精品电影 | 国产高清av在线播放 | 亚洲 a v无 码免 费 成 人 a v | 图片小说视频一区二区 | 亚洲成色在线综合网站 | 丰满少妇熟乱xxxxx视频 | 精品aⅴ一区二区三区 | 亚洲精品一区二区三区四区五区 | 99久久精品午夜一区二区 | 亚洲欧洲中文日韩av乱码 | 麻豆md0077饥渴少妇 | 欧洲熟妇精品视频 | 日韩人妻无码中文字幕视频 | 午夜肉伦伦影院 | 国产偷自视频区视频 | 男女超爽视频免费播放 | 国产人妻精品一区二区三区不卡 | 亚洲精品综合一区二区三区在线 | 亚洲乱码中文字幕在线 | 亚洲精品美女久久久久久久 | 四虎国产精品免费久久 | 国产色在线 | 国产 | 激情亚洲一区国产精品 | 天天综合网天天综合色 | 97夜夜澡人人双人人人喊 | 欧美日韩人成综合在线播放 | 国产va免费精品观看 | 97se亚洲精品一区 | 秋霞成人午夜鲁丝一区二区三区 | 无码精品国产va在线观看dvd | 亚洲熟熟妇xxxx | 狠狠色丁香久久婷婷综合五月 | 国产激情精品一区二区三区 | 88国产精品欧美一区二区三区 | 欧美 日韩 亚洲 在线 | 欧美第一黄网免费网站 | 欧美xxxx黑人又粗又长 | 少妇被粗大的猛进出69影院 | 久久综合香蕉国产蜜臀av | www成人国产高清内射 | 久久综合网欧美色妞网 | 久久久久成人片免费观看蜜芽 | 国产女主播喷水视频在线观看 | 国产无遮挡又黄又爽又色 | 97夜夜澡人人双人人人喊 | 国产成人午夜福利在线播放 | 一区二区三区乱码在线 | 欧洲 | 青草青草久热国产精品 | 欧美精品一区二区精品久久 | 丝袜足控一区二区三区 | 精品亚洲韩国一区二区三区 | 中文精品久久久久人妻不卡 | 亚洲成a人片在线观看日本 | 国产精品亚洲综合色区韩国 | 亚洲乱亚洲乱妇50p | 老熟妇乱子伦牲交视频 | 久久亚洲a片com人成 | 国内精品人妻无码久久久影院蜜桃 | 狠狠cao日日穞夜夜穞av | 色偷偷人人澡人人爽人人模 | 国产热a欧美热a在线视频 | 久久精品人妻少妇一区二区三区 | 对白脏话肉麻粗话av | 乱码午夜-极国产极内射 | 丰满护士巨好爽好大乳 | 久久久精品国产sm最大网站 | 国产亚av手机在线观看 | 无码国产激情在线观看 | 国产高清av在线播放 | 亚洲天堂2017无码中文 | 夜夜影院未满十八勿进 | 日韩亚洲欧美中文高清在线 | 国产精品毛片一区二区 | 水蜜桃av无码 | 在线播放免费人成毛片乱码 | 中国女人内谢69xxxxxa片 | 精品无码国产自产拍在线观看蜜 | 亚洲精品中文字幕乱码 | 欧美日韩在线亚洲综合国产人 | 在线 国产 欧美 亚洲 天堂 | 小鲜肉自慰网站xnxx | 亚洲精品鲁一鲁一区二区三区 | 久久这里只有精品视频9 | 性欧美牲交在线视频 | 日产精品99久久久久久 | 在线精品亚洲一区二区 | 色五月五月丁香亚洲综合网 | 成人无码影片精品久久久 | 久久综合九色综合97网 | 亚洲熟熟妇xxxx | 国产无遮挡又黄又爽又色 | 蜜桃视频韩日免费播放 | 国产精品人妻一区二区三区四 | 亚洲国产成人av在线观看 | 中文字幕乱码亚洲无线三区 | 国产亚洲精品精品国产亚洲综合 | 久久国产精品萌白酱免费 | 日韩 欧美 动漫 国产 制服 | 少妇被黑人到高潮喷出白浆 | 国产性生大片免费观看性 | 国产精品人妻一区二区三区四 | 综合人妻久久一区二区精品 | 亚洲一区二区三区偷拍女厕 | 少妇性l交大片 | 国产av一区二区三区最新精品 | 妺妺窝人体色www在线小说 | www国产精品内射老师 | 四十如虎的丰满熟妇啪啪 | 日本欧美一区二区三区乱码 | 色综合久久88色综合天天 | 97精品国产97久久久久久免费 | 两性色午夜视频免费播放 | 国产在线无码精品电影网 | 亚洲欧美色中文字幕在线 | 天天躁夜夜躁狠狠是什么心态 | 精品aⅴ一区二区三区 | 国产肉丝袜在线观看 | 亚洲一区二区三区四区 | 国产热a欧美热a在线视频 | 久久婷婷五月综合色国产香蕉 | 亚洲 a v无 码免 费 成 人 a v | 男女下面进入的视频免费午夜 | 亚洲欧美国产精品久久 | 亚洲男人av香蕉爽爽爽爽 | 麻花豆传媒剧国产免费mv在线 | 国产精品久久久久久亚洲毛片 | 国产亚洲人成a在线v网站 | 在线亚洲高清揄拍自拍一品区 | 女高中生第一次破苞av | 未满成年国产在线观看 | 国产亚洲欧美日韩亚洲中文色 | 国产高潮视频在线观看 | 一本色道久久综合狠狠躁 | 午夜福利电影 | 99在线 | 亚洲 | 一本久道久久综合狠狠爱 | 香蕉久久久久久av成人 | 亚洲综合色区中文字幕 | 三上悠亚人妻中文字幕在线 | 网友自拍区视频精品 | 亚洲男人av香蕉爽爽爽爽 | 久久久久久av无码免费看大片 | 成人无码视频免费播放 | 亚洲精品成人av在线 | 97夜夜澡人人爽人人喊中国片 | 久久久精品国产sm最大网站 | 国内少妇偷人精品视频免费 | 久久久久免费看成人影片 | 成人无码影片精品久久久 | 中文字幕乱妇无码av在线 | 人妻少妇被猛烈进入中文字幕 | 国产日产欧产精品精品app | 国产免费观看黄av片 | 国产精品久久久久久久9999 | 欧洲欧美人成视频在线 | 18禁黄网站男男禁片免费观看 | 亚洲第一无码av无码专区 | 青青青手机频在线观看 | 无套内谢老熟女 | 国产女主播喷水视频在线观看 | 未满成年国产在线观看 | 日韩精品无码免费一区二区三区 | 日韩欧美中文字幕在线三区 | 少妇高潮喷潮久久久影院 | 麻豆国产丝袜白领秘书在线观看 | 性生交大片免费看l | 少妇邻居内射在线 | 无码一区二区三区在线 | 久久97精品久久久久久久不卡 | 人妻人人添人妻人人爱 | 小泽玛莉亚一区二区视频在线 | 一区二区三区乱码在线 | 欧洲 | 国内精品人妻无码久久久影院蜜桃 | 亚洲欧美精品aaaaaa片 | 国产成人无码av片在线观看不卡 | 亚洲乱码中文字幕在线 | 男女爱爱好爽视频免费看 | 一本色道婷婷久久欧美 | 2020久久香蕉国产线看观看 | 狠狠色色综合网站 | 亚洲精品国产精品乱码不卡 | 美女张开腿让人桶 | 久久精品女人的天堂av | 日本大乳高潮视频在线观看 | 日韩亚洲欧美中文高清在线 | 在线播放免费人成毛片乱码 | 免费看少妇作爱视频 | 久久久久人妻一区精品色欧美 | 亚洲色偷偷偷综合网 | v一区无码内射国产 | 欧美色就是色 | 久久成人a毛片免费观看网站 | 国产人成高清在线视频99最全资源 | 亚洲国产日韩a在线播放 | 波多野结衣乳巨码无在线观看 | 国产热a欧美热a在线视频 | 亚洲日本va午夜在线电影 | 丰满妇女强制高潮18xxxx | 人妻有码中文字幕在线 | 欧美精品免费观看二区 | 日日摸天天摸爽爽狠狠97 | 亚洲狠狠婷婷综合久久 | 日韩欧美中文字幕公布 | 啦啦啦www在线观看免费视频 | 亚洲色大成网站www国产 | 撕开奶罩揉吮奶头视频 | 一本一道久久综合久久 | 久久久久免费精品国产 | 欧美第一黄网免费网站 | 国产内射爽爽大片视频社区在线 | 国产乱子伦视频在线播放 | 狠狠色噜噜狠狠狠狠7777米奇 | 在线视频网站www色 | 天天av天天av天天透 | 国产真实乱对白精彩久久 | 亚洲伊人久久精品影院 | 国产精品鲁鲁鲁 | 人妻少妇被猛烈进入中文字幕 | 国产美女精品一区二区三区 | 亚洲欧美精品aaaaaa片 | 人人爽人人澡人人人妻 | 欧美激情一区二区三区成人 | 青草青草久热国产精品 | 性欧美牲交xxxxx视频 | 大地资源网第二页免费观看 | 人人妻人人澡人人爽欧美一区九九 | 波多野结衣aⅴ在线 | 5858s亚洲色大成网站www | 日韩欧美群交p片內射中文 | 国产绳艺sm调教室论坛 | 欧美真人作爱免费视频 | www国产亚洲精品久久网站 | 小sao货水好多真紧h无码视频 | 牛和人交xxxx欧美 | 在线成人www免费观看视频 | 99久久久无码国产aaa精品 | 东京热男人av天堂 | 国产深夜福利视频在线 | 久久99精品久久久久婷婷 | 又粗又大又硬毛片免费看 | 精品一区二区三区波多野结衣 | 午夜肉伦伦影院 | 色婷婷av一区二区三区之红樱桃 | 久久久久久亚洲精品a片成人 | 国产精品久久久久久久影院 | 亚洲国产精华液网站w | 国产精品美女久久久久av爽李琼 | 欧美人与禽猛交狂配 | 日韩人妻无码中文字幕视频 | 天堂亚洲免费视频 | 一本久久a久久精品亚洲 | 亚洲欧洲日本综合aⅴ在线 | 综合网日日天干夜夜久久 | 亚洲中文字幕成人无码 | 国产成人无码区免费内射一片色欲 | 精品无码一区二区三区爱欲 | 国产精品高潮呻吟av久久 | 久久亚洲精品中文字幕无男同 | 久久久久人妻一区精品色欧美 | 少妇厨房愉情理9仑片视频 | 亚洲va欧美va天堂v国产综合 | 亚洲综合无码一区二区三区 | 国产精品对白交换视频 | 在线播放无码字幕亚洲 | 澳门永久av免费网站 | 国产手机在线αⅴ片无码观看 | 狠狠cao日日穞夜夜穞av | 国产精品理论片在线观看 | 国产精品99爱免费视频 | 婷婷五月综合缴情在线视频 | 免费观看又污又黄的网站 | 免费乱码人妻系列无码专区 | 红桃av一区二区三区在线无码av | 在线精品亚洲一区二区 | 亚洲成av人片在线观看无码不卡 | 精品久久久无码中文字幕 | 午夜福利电影 | 国产又粗又硬又大爽黄老大爷视 | 亚洲精品成人福利网站 | 小鲜肉自慰网站xnxx | 中文字幕av日韩精品一区二区 | 久久熟妇人妻午夜寂寞影院 | 色欲综合久久中文字幕网 | 天天摸天天碰天天添 | 狠狠cao日日穞夜夜穞av | 香蕉久久久久久av成人 | 欧美真人作爱免费视频 | 鲁鲁鲁爽爽爽在线视频观看 | 成人亚洲精品久久久久 | 亚洲色大成网站www国产 | 蜜桃视频插满18在线观看 | 激情内射亚州一区二区三区爱妻 | 亚洲熟悉妇女xxx妇女av | 欧美老人巨大xxxx做受 | 免费无码av一区二区 | 日韩av无码一区二区三区 | 丁香花在线影院观看在线播放 | 水蜜桃亚洲一二三四在线 | 国产精品久久久久7777 | 久久国产精品_国产精品 | 亚洲国产成人av在线观看 | 色窝窝无码一区二区三区色欲 | 久久伊人色av天堂九九小黄鸭 | 欧美午夜特黄aaaaaa片 | 国产9 9在线 | 中文 | 成人一在线视频日韩国产 | 亚洲狠狠婷婷综合久久 | 亚洲日韩一区二区三区 | 色诱久久久久综合网ywww | 东京一本一道一二三区 | 好男人社区资源 | 亚洲成av人片天堂网无码】 | 久久国产自偷自偷免费一区调 | yw尤物av无码国产在线观看 | 蜜臀av在线播放 久久综合激激的五月天 | 在线观看免费人成视频 | 国产真实乱对白精彩久久 | 国产真人无遮挡作爱免费视频 | 永久黄网站色视频免费直播 | 免费无码av一区二区 | 欧美午夜特黄aaaaaa片 | 又大又硬又黄的免费视频 | 亚洲啪av永久无码精品放毛片 | 天天燥日日燥 | 精品厕所偷拍各类美女tp嘘嘘 | 欧美熟妇另类久久久久久不卡 | 成人免费视频视频在线观看 免费 | 67194成是人免费无码 | 亚洲成av人片在线观看无码不卡 | 一本色道婷婷久久欧美 | 人人妻人人澡人人爽欧美精品 | 丰满人妻精品国产99aⅴ | 丰满人妻一区二区三区免费视频 | 无码一区二区三区在线 | 亚洲s码欧洲m码国产av | 福利一区二区三区视频在线观看 | 啦啦啦www在线观看免费视频 | 国产精品久久久久7777 | 亚洲无人区午夜福利码高清完整版 | 人妻少妇精品无码专区动漫 | 精品国产一区av天美传媒 | 亚洲成av人片天堂网无码】 | 一本一道久久综合久久 | 国产亚洲精品久久久久久大师 | 牲交欧美兽交欧美 | 国产精品国产自线拍免费软件 | 国产三级精品三级男人的天堂 | 久久99久久99精品中文字幕 | 丰满人妻一区二区三区免费视频 | 日本免费一区二区三区最新 | 国产精品美女久久久网av | 欧美高清在线精品一区 | 亚洲 a v无 码免 费 成 人 a v | 乱人伦中文视频在线观看 | 成人av无码一区二区三区 | 国产激情艳情在线看视频 | 麻豆md0077饥渴少妇 | 高清不卡一区二区三区 | 久久久久99精品国产片 | 大地资源中文第3页 | 性史性农村dvd毛片 | 小sao货水好多真紧h无码视频 | 国产九九九九九九九a片 | 一本久道久久综合狠狠爱 | 亚洲色成人中文字幕网站 | 国产无套内射久久久国产 | 给我免费的视频在线观看 | 亚洲色欲久久久综合网东京热 | 精品亚洲韩国一区二区三区 | 国产肉丝袜在线观看 | 国产精品毛片一区二区 | 国产成人综合在线女婷五月99播放 | 青青草原综合久久大伊人精品 | 欧洲欧美人成视频在线 | 精品国产成人一区二区三区 | 日本高清一区免费中文视频 | 性做久久久久久久久 | aⅴ亚洲 日韩 色 图网站 播放 | 黄网在线观看免费网站 | 欧美 日韩 亚洲 在线 | 亚洲精品国产精品乱码视色 | 日本乱人伦片中文三区 | www成人国产高清内射 | 永久免费精品精品永久-夜色 | 国内精品人妻无码久久久影院蜜桃 | 色噜噜亚洲男人的天堂 | 精品无码一区二区三区的天堂 | 全黄性性激高免费视频 | 亚洲乱码国产乱码精品精 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 一本加勒比波多野结衣 | 久久综合网欧美色妞网 | 国产精品igao视频网 | 又大又紧又粉嫩18p少妇 | 乌克兰少妇xxxx做受 | 香蕉久久久久久av成人 | 日本一区二区更新不卡 | 国产亚av手机在线观看 | aⅴ在线视频男人的天堂 | 天天拍夜夜添久久精品大 | 免费观看又污又黄的网站 | www国产亚洲精品久久久日本 | 国产成人无码区免费内射一片色欲 | 欧美肥老太牲交大战 | 久久久精品成人免费观看 | 黑人大群体交免费视频 | 精品人人妻人人澡人人爽人人 | 亚洲欧洲无卡二区视頻 | 久久亚洲国产成人精品性色 | 97久久国产亚洲精品超碰热 | 久久国内精品自在自线 | 日本精品久久久久中文字幕 | 国产精品国产自线拍免费软件 | 精品厕所偷拍各类美女tp嘘嘘 | 亚洲精品鲁一鲁一区二区三区 | 高清不卡一区二区三区 | 亚洲中文字幕久久无码 | 精品亚洲成av人在线观看 | 3d动漫精品啪啪一区二区中 | 撕开奶罩揉吮奶头视频 | 日本www一道久久久免费榴莲 | 色一情一乱一伦一视频免费看 | 永久免费精品精品永久-夜色 | 丁香花在线影院观看在线播放 | 美女黄网站人色视频免费国产 | 亚洲日本一区二区三区在线 | 亚洲а∨天堂久久精品2021 | 在线视频网站www色 | 欧美成人免费全部网站 | 一本久久伊人热热精品中文字幕 | 久久久久人妻一区精品色欧美 | 国产亚洲日韩欧美另类第八页 | 四虎国产精品一区二区 | 无码av最新清无码专区吞精 | 水蜜桃av无码 | 欧美成人免费全部网站 | 久久精品国产日本波多野结衣 | 两性色午夜免费视频 | 国产在线精品一区二区三区直播 | 国产热a欧美热a在线视频 | 国产精品内射视频免费 | 欧美熟妇另类久久久久久不卡 | 久久99精品久久久久久动态图 | 大屁股大乳丰满人妻 | 国产麻豆精品精东影业av网站 | 又湿又紧又大又爽a视频国产 | 久久久久av无码免费网 | 嫩b人妻精品一区二区三区 | 亚洲成av人在线观看网址 | 人妻无码久久精品人妻 | 国产两女互慰高潮视频在线观看 | 亚洲gv猛男gv无码男同 | 亚洲人成网站色7799 | 国产精品内射视频免费 | 亚洲区欧美区综合区自拍区 | 中文字幕无码免费久久99 | 乱人伦人妻中文字幕无码久久网 | 中国女人内谢69xxxxxa片 | 中文字幕av无码一区二区三区电影 | 波多野结衣高清一区二区三区 | 亚洲精品无码国产 | 性欧美疯狂xxxxbbbb | 亚洲综合无码一区二区三区 | 人人爽人人澡人人高潮 | 国产综合色产在线精品 | 亚洲一区二区三区香蕉 | 中国女人内谢69xxxx | 色偷偷人人澡人人爽人人模 | 丰腴饱满的极品熟妇 | 特大黑人娇小亚洲女 | 欧美日韩一区二区三区自拍 | 最近免费中文字幕中文高清百度 | 国产熟妇高潮叫床视频播放 | 俺去俺来也在线www色官网 | 最近中文2019字幕第二页 | 99riav国产精品视频 | 久久综合九色综合欧美狠狠 | 国产成人综合在线女婷五月99播放 | 无码精品人妻一区二区三区av | 国产精品久久久久影院嫩草 | 国産精品久久久久久久 | 一本无码人妻在中文字幕免费 | 无码人妻久久一区二区三区不卡 | 亚洲日韩一区二区三区 | 少妇一晚三次一区二区三区 | 伊人久久大香线蕉午夜 | 成人综合网亚洲伊人 | 国内精品九九久久久精品 | 熟妇女人妻丰满少妇中文字幕 | 亚洲综合久久一区二区 | 妺妺窝人体色www婷婷 | 亚洲の无码国产の无码步美 | 国产电影无码午夜在线播放 | 久久亚洲中文字幕无码 | 日本熟妇浓毛 | 无遮挡啪啪摇乳动态图 | 中文毛片无遮挡高清免费 | 大地资源网第二页免费观看 | 久久精品人妻少妇一区二区三区 | 噜噜噜亚洲色成人网站 | 日本在线高清不卡免费播放 | 人妻无码αv中文字幕久久琪琪布 | 亚洲成在人网站无码天堂 | 高清无码午夜福利视频 | 精品少妇爆乳无码av无码专区 | 亚洲s码欧洲m码国产av | 国产精品办公室沙发 | 国产真人无遮挡作爱免费视频 | 午夜无码人妻av大片色欲 | 国产亚洲视频中文字幕97精品 | 亚洲国产av美女网站 | 亚欧洲精品在线视频免费观看 | 久9re热视频这里只有精品 | 澳门永久av免费网站 | 亚洲七七久久桃花影院 | 久久精品国产精品国产精品污 | 夜夜躁日日躁狠狠久久av | 午夜肉伦伦影院 | 丰腴饱满的极品熟妇 | 永久免费精品精品永久-夜色 | 国产精品igao视频网 | 国产超碰人人爽人人做人人添 | 久久精品中文字幕一区 | аⅴ资源天堂资源库在线 | 97夜夜澡人人爽人人喊中国片 | 亚洲经典千人经典日产 | 国产成人综合在线女婷五月99播放 | 1000部啪啪未满十八勿入下载 | 中文字幕中文有码在线 | 好男人社区资源 | 国产在线一区二区三区四区五区 | 国产精品亚洲а∨无码播放麻豆 | 99久久人妻精品免费一区 | 亚洲色大成网站www | 国产 精品 自在自线 | 精品乱码久久久久久久 | 自拍偷自拍亚洲精品被多人伦好爽 | 国产免费无码一区二区视频 | 国产精品久免费的黄网站 | 精品人人妻人人澡人人爽人人 | 精品国精品国产自在久国产87 | 欧美xxxx黑人又粗又长 | 又色又爽又黄的美女裸体网站 | 中文字幕乱妇无码av在线 | 欧美精品国产综合久久 | 欧洲熟妇色 欧美 | 国产一区二区不卡老阿姨 | 国产在线无码精品电影网 | 日本大乳高潮视频在线观看 | 少妇性l交大片欧洲热妇乱xxx | 成人av无码一区二区三区 | 欧美人与禽猛交狂配 | 色狠狠av一区二区三区 | 人人妻人人澡人人爽欧美一区 | 久久精品国产一区二区三区 | 色一情一乱一伦一视频免费看 | 人人妻人人澡人人爽欧美一区九九 | 无码av免费一区二区三区试看 | 国产精品毛多多水多 | 国产精品永久免费视频 | 国产精品美女久久久久av爽李琼 | 国产一区二区三区精品视频 | 亚洲人成影院在线观看 | 国产高清不卡无码视频 | 成人三级无码视频在线观看 | 永久免费观看国产裸体美女 | 亚洲の无码国产の无码步美 | 国模大胆一区二区三区 | 国产成人综合美国十次 | 国产成人午夜福利在线播放 | 高清国产亚洲精品自在久久 | 国产午夜视频在线观看 | 欧美三级a做爰在线观看 | 亚洲无人区午夜福利码高清完整版 | 久久久久se色偷偷亚洲精品av | 精品久久综合1区2区3区激情 | 亚洲国产精品久久人人爱 | 国产av久久久久精东av | 内射巨臀欧美在线视频 | 国产精品对白交换视频 | 国产人妻人伦精品1国产丝袜 | 久久国产精品_国产精品 | 国产高清不卡无码视频 | 亚洲一区av无码专区在线观看 | 老子影院午夜伦不卡 | 极品尤物被啪到呻吟喷水 | 特黄特色大片免费播放器图片 | 清纯唯美经典一区二区 | 精品 日韩 国产 欧美 视频 | 色综合久久久无码中文字幕 | 中文字幕亚洲情99在线 | 日韩精品a片一区二区三区妖精 | 少妇无码av无码专区在线观看 | 欧美熟妇另类久久久久久多毛 | 日本xxxx色视频在线观看免费 | 人人妻在人人 | 久久99精品国产麻豆蜜芽 | 久久精品无码一区二区三区 | 东京热无码av男人的天堂 | 久久99热只有频精品8 | 日日躁夜夜躁狠狠躁 | 99久久人妻精品免费一区 | 久久精品成人欧美大片 | 国产精品丝袜黑色高跟鞋 | 鲁一鲁av2019在线 | 亚洲呦女专区 | 日韩无码专区 | 伊人久久大香线蕉av一区二区 | 国产一区二区三区精品视频 | 老熟妇乱子伦牲交视频 | 日韩精品a片一区二区三区妖精 | 人人妻人人澡人人爽欧美一区 | 国产三级精品三级男人的天堂 | 欧美精品无码一区二区三区 | 又色又爽又黄的美女裸体网站 | 内射后入在线观看一区 | 午夜精品久久久内射近拍高清 | 日产精品高潮呻吟av久久 | 欧美zoozzooz性欧美 | 日日天日日夜日日摸 | 国内精品人妻无码久久久影院 | 伊人久久婷婷五月综合97色 | 丝袜人妻一区二区三区 | 亚洲精品久久久久中文第一幕 | 亚洲娇小与黑人巨大交 | 亚洲国产精品久久久久久 | 亚洲中文字幕在线无码一区二区 | 久久国产自偷自偷免费一区调 | 精品人妻中文字幕有码在线 | 精品人妻中文字幕有码在线 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 免费人成在线观看网站 | 老太婆性杂交欧美肥老太 | 国产性生大片免费观看性 | 亚洲日本va中文字幕 | 亚洲综合无码久久精品综合 | 中文字幕人妻丝袜二区 | 日韩视频 中文字幕 视频一区 | 300部国产真实乱 | 性啪啪chinese东北女人 | 日韩在线不卡免费视频一区 | 无码精品人妻一区二区三区av | 老熟妇仑乱视频一区二区 | √天堂中文官网8在线 | 国产成人无码一二三区视频 | 99久久精品日本一区二区免费 | 久久久久久国产精品无码下载 | 免费国产黄网站在线观看 | 国产综合久久久久鬼色 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 巨爆乳无码视频在线观看 | 天天av天天av天天透 | 精品亚洲韩国一区二区三区 | 国产精品沙发午睡系列 | 色综合天天综合狠狠爱 | 日日橹狠狠爱欧美视频 | 国内揄拍国内精品人妻 | 日韩少妇白浆无码系列 | 国产精品久久久 | 亚洲va中文字幕无码久久不卡 | 学生妹亚洲一区二区 | 色综合久久中文娱乐网 | 成人性做爰aaa片免费看 | 日韩人妻无码一区二区三区久久99 | 国产两女互慰高潮视频在线观看 | 成年美女黄网站色大免费全看 | 2020最新国产自产精品 | 国产亚洲精品久久久ai换 | 乌克兰少妇性做爰 | 国产无遮挡吃胸膜奶免费看 | 奇米影视7777久久精品人人爽 | 少妇高潮喷潮久久久影院 | 免费国产成人高清在线观看网站 | av人摸人人人澡人人超碰下载 | 欧洲美熟女乱又伦 | 国产人妻大战黑人第1集 | 欧美国产日产一区二区 | 国产人妻久久精品二区三区老狼 | 97资源共享在线视频 | 国产精品爱久久久久久久 | 免费播放一区二区三区 | 正在播放老肥熟妇露脸 | 伊人久久大香线蕉av一区二区 | 亚洲精品综合五月久久小说 | 久久天天躁夜夜躁狠狠 | 草草网站影院白丝内射 | 四虎影视成人永久免费观看视频 | 欧美freesex黑人又粗又大 | 国精产品一品二品国精品69xx | 东北女人啪啪对白 | 99精品国产综合久久久久五月天 | 欧美激情综合亚洲一二区 | 国产人妻精品午夜福利免费 | 中文亚洲成a人片在线观看 | 18禁黄网站男男禁片免费观看 | 人妻少妇被猛烈进入中文字幕 | 熟妇人妻无码xxx视频 | 亚洲综合无码一区二区三区 | 国内精品人妻无码久久久影院蜜桃 | 亚洲人成网站在线播放942 | 久久精品丝袜高跟鞋 | 国产人妻精品一区二区三区不卡 | 亚洲精品国产精品乱码视色 | 国内精品久久久久久中文字幕 | 99久久精品无码一区二区毛片 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 欧美高清在线精品一区 | 国产激情无码一区二区app | 蜜桃视频韩日免费播放 | 少妇被粗大的猛进出69影院 | 日韩欧美中文字幕在线三区 | 国产在线无码精品电影网 | 老子影院午夜伦不卡 | 亚洲色欲色欲天天天www | 亚洲毛片av日韩av无码 | 国产成人无码av一区二区 | 少妇愉情理伦片bd | 熟妇激情内射com | 中文字幕无码乱人伦 | 国产美女极度色诱视频www | 麻豆国产人妻欲求不满谁演的 | 波多野结衣aⅴ在线 | 国产精品成人av在线观看 | 色综合久久88色综合天天 | 天海翼激烈高潮到腰振不止 | 天堂一区人妻无码 | 国产sm调教视频在线观看 | 国产9 9在线 | 中文 | 自拍偷自拍亚洲精品被多人伦好爽 | 亚洲熟女一区二区三区 | 欧美丰满熟妇xxxx性ppx人交 | 人人妻人人澡人人爽欧美一区 | 我要看www免费看插插视频 | 中文无码成人免费视频在线观看 | 水蜜桃亚洲一二三四在线 | 激情国产av做激情国产爱 | 国产午夜无码精品免费看 | 捆绑白丝粉色jk震动捧喷白浆 | 全黄性性激高免费视频 | 国产亲子乱弄免费视频 | 亚洲国产午夜精品理论片 | 一本久久伊人热热精品中文字幕 | 欧洲美熟女乱又伦 | 亚洲人成网站在线播放942 | 久久久亚洲欧洲日产国码αv | 婷婷五月综合缴情在线视频 | 久久久久av无码免费网 | 奇米影视7777久久精品 | 黄网在线观看免费网站 | 免费人成网站视频在线观看 | 欧美日本日韩 | 免费男性肉肉影院 | 国产精品多人p群无码 | 国产艳妇av在线观看果冻传媒 | 亚洲色大成网站www国产 | 成熟人妻av无码专区 | 中文字幕av伊人av无码av | 中文字幕久久久久人妻 | 色综合久久88色综合天天 | 又湿又紧又大又爽a视频国产 | 久久久婷婷五月亚洲97号色 | 日本www一道久久久免费榴莲 | 国模大胆一区二区三区 | 欧美成人免费全部网站 | 国产精品亚洲专区无码不卡 | 国产激情艳情在线看视频 | 人人妻人人澡人人爽欧美精品 | 无码免费一区二区三区 | 中文字幕人成乱码熟女app | 在线а√天堂中文官网 | 丰满诱人的人妻3 | 狂野欧美性猛xxxx乱大交 | 久久久精品欧美一区二区免费 | 中文字幕 亚洲精品 第1页 | 疯狂三人交性欧美 | 国产艳妇av在线观看果冻传媒 | 免费人成在线视频无码 | 婷婷丁香六月激情综合啪 | 亚洲一区二区三区含羞草 | 又黄又爽又色的视频 | 激情综合激情五月俺也去 | 国产深夜福利视频在线 | 老司机亚洲精品影院无码 | 亚洲高清偷拍一区二区三区 | 一本色道婷婷久久欧美 | 久久这里只有精品视频9 | 2020久久超碰国产精品最新 | 亚无码乱人伦一区二区 | 奇米影视7777久久精品人人爽 | 精品成人av一区二区三区 | 久久久精品成人免费观看 | 亚洲精品美女久久久久久久 | 久热国产vs视频在线观看 | 日韩人妻少妇一区二区三区 | 亚洲七七久久桃花影院 | 人人妻人人澡人人爽欧美精品 | 强辱丰满人妻hd中文字幕 | 亚欧洲精品在线视频免费观看 | 黑森林福利视频导航 | 99久久久无码国产aaa精品 | 欧美熟妇另类久久久久久不卡 | 国产亚洲精品久久久久久 | 少妇人妻大乳在线视频 | 内射爽无广熟女亚洲 | 国产在线一区二区三区四区五区 | 久久国内精品自在自线 | 亚洲国产精品久久久天堂 | 特黄特色大片免费播放器图片 | 欧美黑人巨大xxxxx | 狠狠色欧美亚洲狠狠色www | 夜精品a片一区二区三区无码白浆 | 一本久道久久综合婷婷五月 | 在线观看欧美一区二区三区 | 国产亚洲视频中文字幕97精品 | 人妻aⅴ无码一区二区三区 | 性做久久久久久久免费看 | 少女韩国电视剧在线观看完整 | 丰满人妻一区二区三区免费视频 | 久久久精品国产sm最大网站 | 性欧美牲交在线视频 | 日韩人妻无码中文字幕视频 | 色诱久久久久综合网ywww | 国产精品无码mv在线观看 | 久久精品人人做人人综合 | 国产精品亚洲一区二区三区喷水 | 久久亚洲精品中文字幕无男同 | 无码人妻丰满熟妇区五十路百度 | 亚洲一区av无码专区在线观看 | 又紧又大又爽精品一区二区 | 蜜桃av抽搐高潮一区二区 | 黑人巨大精品欧美一区二区 | 国产乱子伦视频在线播放 | 免费观看激色视频网站 | 久久精品一区二区三区四区 | 丰满妇女强制高潮18xxxx | 国产明星裸体无码xxxx视频 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 亚洲精品成人福利网站 | 性生交大片免费看女人按摩摩 | 成人精品视频一区二区 | 亚洲成av人综合在线观看 | 中文字幕久久久久人妻 | 少妇被黑人到高潮喷出白浆 | 国产精品久久久av久久久 | 无人区乱码一区二区三区 | 国产人妻精品一区二区三区不卡 | 丁香啪啪综合成人亚洲 | 一二三四在线观看免费视频 | 麻豆蜜桃av蜜臀av色欲av | 四十如虎的丰满熟妇啪啪 | 国产艳妇av在线观看果冻传媒 | 欧美日韩一区二区综合 | 精品熟女少妇av免费观看 | 人妻互换免费中文字幕 | 久久久久久a亚洲欧洲av冫 | 波多野结衣aⅴ在线 | 国产精品成人av在线观看 | 久久久精品国产sm最大网站 | 色老头在线一区二区三区 | 国精品人妻无码一区二区三区蜜柚 | 久久综合九色综合97网 | 亚洲色偷偷男人的天堂 | 亚洲一区二区三区偷拍女厕 | 亚洲综合无码久久精品综合 | 人妻插b视频一区二区三区 | 国产在线精品一区二区三区直播 | 兔费看少妇性l交大片免费 | 丰满人妻精品国产99aⅴ | 中文字幕乱码中文乱码51精品 | 久久99精品久久久久婷婷 | 国产在线无码精品电影网 | 日本精品人妻无码免费大全 | 国产欧美精品一区二区三区 | 一个人看的www免费视频在线观看 | 国产精品无码永久免费888 | 久久国内精品自在自线 | aⅴ亚洲 日韩 色 图网站 播放 | 成人无码精品一区二区三区 | 51国偷自产一区二区三区 | 欧美日韩人成综合在线播放 | 日韩人妻系列无码专区 | 日韩亚洲欧美中文高清在线 | 国产97在线 | 亚洲 | 强辱丰满人妻hd中文字幕 | 欧美兽交xxxx×视频 | 免费观看的无遮挡av | 久久精品国产99久久6动漫 | 欧美性黑人极品hd | 国产精品久久久久久亚洲毛片 | 中文字幕av日韩精品一区二区 | 久久久亚洲欧洲日产国码αv | 露脸叫床粗话东北少妇 | 亚洲国产欧美日韩精品一区二区三区 | 成年美女黄网站色大免费全看 | 中国女人内谢69xxxx | 成人无码影片精品久久久 | 老熟女重囗味hdxx69 | 日本大乳高潮视频在线观看 | 精品国精品国产自在久国产87 | 欧美丰满熟妇xxxx | 波多野结衣一区二区三区av免费 | 成人试看120秒体验区 | 国产色在线 | 国产 | 中文字幕中文有码在线 | 天干天干啦夜天干天2017 | 无码成人精品区在线观看 | 欧美三级不卡在线观看 | 内射老妇bbwx0c0ck | 狠狠色丁香久久婷婷综合五月 | 国产精品人人爽人人做我的可爱 | 亚洲人成影院在线无码按摩店 | 国产精品成人av在线观看 | 老熟妇乱子伦牲交视频 | 成人无码精品1区2区3区免费看 | 日日橹狠狠爱欧美视频 | 久久aⅴ免费观看 | 最近中文2019字幕第二页 | 亚洲欧美国产精品专区久久 | 沈阳熟女露脸对白视频 | 国产在线一区二区三区四区五区 | 野外少妇愉情中文字幕 | 国产精品毛片一区二区 | 国产在线精品一区二区三区直播 | 久久精品国产一区二区三区 | 国内综合精品午夜久久资源 | 亚洲精品一区二区三区大桥未久 | a在线观看免费网站大全 | 国产激情一区二区三区 | 国产精品人人妻人人爽 | 乱人伦人妻中文字幕无码久久网 | 最新国产麻豆aⅴ精品无码 | 日韩人妻无码一区二区三区久久99 | 久久国产36精品色熟妇 | 精品久久久无码人妻字幂 | 久久久中文久久久无码 | 国产乱码精品一品二品 | 午夜精品一区二区三区在线观看 | 麻豆蜜桃av蜜臀av色欲av | 十八禁真人啪啪免费网站 | 国产97在线 | 亚洲 | 亚洲gv猛男gv无码男同 | 亚洲国产精品成人久久蜜臀 | 亚洲欧洲日本综合aⅴ在线 | 人人妻人人澡人人爽人人精品浪潮 | 亚洲欧美日韩国产精品一区二区 | 亚洲成av人影院在线观看 | 黑人巨大精品欧美黑寡妇 | 少妇被粗大的猛进出69影院 | 蜜桃臀无码内射一区二区三区 | 无码乱肉视频免费大全合集 | 无码播放一区二区三区 | 久久久久国色av免费观看性色 | 乱人伦人妻中文字幕无码久久网 | 中文字幕人妻丝袜二区 | 撕开奶罩揉吮奶头视频 | 亚洲天堂2017无码中文 | 成人免费视频视频在线观看 免费 | 亚洲中文字幕av在天堂 | 5858s亚洲色大成网站www | 国产免费观看黄av片 | 国产一区二区不卡老阿姨 | 欧美xxxxx精品 | 日本熟妇人妻xxxxx人hd | 99精品无人区乱码1区2区3区 | 国产乱人伦av在线无码 | 一本无码人妻在中文字幕免费 | 久久精品成人欧美大片 | 亚洲人成网站色7799 | 亚洲一区二区三区含羞草 | 久久国产劲爆∧v内射 | 蜜臀av无码人妻精品 | 99久久久无码国产aaa精品 | 色 综合 欧美 亚洲 国产 | 97精品人妻一区二区三区香蕉 | 一本久道高清无码视频 | 人妻与老人中文字幕 | 奇米影视7777久久精品人人爽 | 精品欧洲av无码一区二区三区 | 色婷婷欧美在线播放内射 | 亚洲国产午夜精品理论片 | 大乳丰满人妻中文字幕日本 | 色狠狠av一区二区三区 | av人摸人人人澡人人超碰下载 | 丰满少妇高潮惨叫视频 | 国产成人无码av一区二区 | 丰满妇女强制高潮18xxxx | 中文字幕av无码一区二区三区电影 | 久久国产36精品色熟妇 | 好爽又高潮了毛片免费下载 | 精品偷拍一区二区三区在线看 | 蜜臀aⅴ国产精品久久久国产老师 | 亚洲欧美日韩成人高清在线一区 | 国产色xx群视频射精 | 成年美女黄网站色大免费全看 | 性史性农村dvd毛片 | 成人试看120秒体验区 | 中文字幕人妻丝袜二区 | 欧美日本免费一区二区三区 | 久久国产劲爆∧v内射 | 欧洲vodafone精品性 | 亚洲狠狠色丁香婷婷综合 | 99久久99久久免费精品蜜桃 | 伊人久久大香线蕉av一区二区 | 亚洲精品国产品国语在线观看 | 亚洲最大成人网站 | 国产sm调教视频在线观看 | 国产精品无码久久av | 性生交片免费无码看人 | 亚洲综合在线一区二区三区 | 亚洲色大成网站www | 国产性生大片免费观看性 | 欧美激情综合亚洲一二区 | 成人一区二区免费视频 | 国产激情精品一区二区三区 | 国产精品美女久久久久av爽李琼 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 久久久久亚洲精品男人的天堂 | 国产亚洲精品久久久久久久久动漫 | a国产一区二区免费入口 | 亚洲成av人综合在线观看 | 欧美日韩人成综合在线播放 | 精品无人区无码乱码毛片国产 | 国产成人无码av片在线观看不卡 | 性欧美熟妇videofreesex | 国产亚洲欧美日韩亚洲中文色 | 中文久久乱码一区二区 | 中文字幕无码人妻少妇免费 | 人人爽人人澡人人人妻 | 欧美国产亚洲日韩在线二区 | 亚洲大尺度无码无码专区 | 人人妻人人藻人人爽欧美一区 | 人妻无码αv中文字幕久久琪琪布 | 久久综合给久久狠狠97色 | 日韩视频 中文字幕 视频一区 | 少妇无套内谢久久久久 | 午夜精品一区二区三区的区别 | 51国偷自产一区二区三区 | 精品人妻中文字幕有码在线 | 欧美激情一区二区三区成人 | 国产网红无码精品视频 | 亚洲成av人在线观看网址 | 熟女少妇在线视频播放 | 欧美性猛交内射兽交老熟妇 | 国产国语老龄妇女a片 | 女人和拘做爰正片视频 | 免费人成网站视频在线观看 | 久久视频在线观看精品 | 亚洲日韩av一区二区三区四区 | 亚洲人成网站免费播放 | 99久久精品日本一区二区免费 | 亚洲精品久久久久久一区二区 | 3d动漫精品啪啪一区二区中 | 少妇人妻大乳在线视频 | 熟妇女人妻丰满少妇中文字幕 | 真人与拘做受免费视频一 | 日日麻批免费40分钟无码 | 国产精品人人爽人人做我的可爱 | 欧美真人作爱免费视频 | 亚洲中文字幕av在天堂 | 国产成人无码专区 | 粉嫩少妇内射浓精videos | 中文字幕乱码亚洲无线三区 | 精品一区二区不卡无码av | 久久久婷婷五月亚洲97号色 | 亚洲热妇无码av在线播放 | 亚洲第一无码av无码专区 | 亚洲成在人网站无码天堂 | 中文字幕无码日韩欧毛 | 欧美老熟妇乱xxxxx | 麻豆国产97在线 | 欧洲 | 欧美变态另类xxxx | 欧美日韩人成综合在线播放 | 国产在线精品一区二区高清不卡 | 无码人妻丰满熟妇区五十路百度 | 国产 浪潮av性色四虎 | 精品人妻人人做人人爽夜夜爽 | 亚洲欧美精品aaaaaa片 | www国产精品内射老师 | 樱花草在线播放免费中文 | 国产精品无码永久免费888 | 18禁止看的免费污网站 | 国产情侣作爱视频免费观看 | 日韩精品乱码av一区二区 | 日韩成人一区二区三区在线观看 | 玩弄人妻少妇500系列视频 | 国产精品香蕉在线观看 | 久久精品国产精品国产精品污 | 国产亚洲欧美在线专区 | 日本成熟视频免费视频 | 两性色午夜视频免费播放 | 成人精品视频一区二区 | 国产成人人人97超碰超爽8 | 人妻aⅴ无码一区二区三区 | 麻豆国产97在线 | 欧洲 | 国产手机在线αⅴ片无码观看 | 日本精品人妻无码77777 天堂一区人妻无码 | 无码福利日韩神码福利片 | 国产精品久久久 | 亚洲一区二区观看播放 | 午夜精品久久久久久久 | 亚洲欧美精品aaaaaa片 | 婷婷色婷婷开心五月四房播播 | 2020久久超碰国产精品最新 | 国产成人精品久久亚洲高清不卡 | 午夜精品一区二区三区的区别 | 国产成人无码a区在线观看视频app | 亚洲精品国偷拍自产在线麻豆 | 丰满人妻翻云覆雨呻吟视频 | 又粗又大又硬又长又爽 | 日韩视频 中文字幕 视频一区 | 十八禁真人啪啪免费网站 | 丰满人妻精品国产99aⅴ | 欧洲精品码一区二区三区免费看 | 亚洲中文字幕av在天堂 | 色综合视频一区二区三区 | 亚洲欧美日韩国产精品一区二区 | 亚洲熟妇自偷自拍另类 | 99久久久无码国产精品免费 | 偷窥日本少妇撒尿chinese | 国产亚洲精品久久久久久久 | 国产后入清纯学生妹 | 人人妻人人藻人人爽欧美一区 | 国产精品亚洲五月天高清 | 国产激情艳情在线看视频 | 久久97精品久久久久久久不卡 | 内射白嫩少妇超碰 | 精品国精品国产自在久国产87 | 国产一区二区三区四区五区加勒比 | 伊人久久大香线焦av综合影院 | a在线亚洲男人的天堂 | 欧美精品国产综合久久 | 久久久久av无码免费网 | 精品无码av一区二区三区 | 精品国产乱码久久久久乱码 | 国产av剧情md精品麻豆 | 久久午夜无码鲁丝片秋霞 | 牲交欧美兽交欧美 | 无码人妻少妇伦在线电影 | 亚洲综合在线一区二区三区 | 7777奇米四色成人眼影 | 免费人成在线观看网站 | 久久亚洲中文字幕精品一区 | 久精品国产欧美亚洲色aⅴ大片 | 欧美激情综合亚洲一二区 | 最近免费中文字幕中文高清百度 | 亚洲色欲色欲天天天www | 蜜桃视频插满18在线观看 | 亚洲日韩中文字幕在线播放 | 久久国产自偷自偷免费一区调 | 中文字幕 亚洲精品 第1页 | 性史性农村dvd毛片 | 一本久道久久综合婷婷五月 | 欧美国产日韩亚洲中文 | 丰满人妻被黑人猛烈进入 | 天天躁夜夜躁狠狠是什么心态 | 国产片av国语在线观看 | 无码人妻精品一区二区三区下载 | 国产福利视频一区二区 |