以下內容適用於VS2005SP1及更高版本。
工具-〉宏-〉宏資源管理員,
在宏資源管理員視窗右擊宏結點,選擇建立巨集專案。
選擇巨集專案,命名為Intellisense,然後添加,
將自動添加的Module1重新命名為IntellisenseModule。
右擊IntellisenseModule選擇編輯,
在新視窗中粘貼下面的代碼:
Imports System</p><p>Imports EnvDTE</p><p>Imports EnvDTE80</p><p>Imports System.Diagnostics</p><p>Enum ISENSE_FLAGS</p><p> ISENSE_NORMAL = 0 'normal (Intellisense On)</p><p> ISENSE_NOBG = &H1 'no bg parsing (Intellisense Updating Off - although NCB file will be opened r/w and repersisted at shutdown)</p><p> ISENSE_NOQUERY = &H2 'no queries (don't run any ISense queries)</p><p> ISENSE_NCBRO = &H4 'no saving of NCB (must be set before opening NCB, doesn't affect updating or queries, just persisting of NCB)</p><p> ISENSE_OFF = &H7 'no bg parsing, no queries, no saving of NCB, ncb will still be opened, however</p><p>End Enum</p><p>Public Module IntellisenseModule</p><p> Sub Intellisense_NoUpdate()</p><p> DTE.Properties("TextEditor", "C/C++ Specific").Item("IntellisenseOptions").Value = ISENSE_FLAGS.ISENSE_NOBG Or ISENSE_FLAGS.ISENSE_NCBRO</p><p> End Sub</p><p> Sub Intellisense_Off()</p><p> DTE.Properties("TextEditor", "C/C++ Specific").Item("IntellisenseOptions").Value = ISENSE_FLAGS.ISENSE_OFF</p><p> End Sub</p><p> Sub Intellisense_On()</p><p> DTE.Properties("TextEditor", "C/C++ Specific").Item("IntellisenseOptions").Value = ISENSE_FLAGS.ISENSE_NORMAL</p><p> End Sub</p><p> Sub Intellisense_Status()</p><p> Dim x</p><p> x = DTE.Properties("TextEditor", "C/C++ Specific").Item("IntellisenseOptions").Value</p><p> Dim result</p><p> If x = ISENSE_FLAGS.ISENSE_NORMAL Then</p><p> result = "Intellisense On"</p><p> ElseIf x = ISENSE_FLAGS.ISENSE_OFF Then</p><p> result = "Intellisense Off"</p><p> Else</p><p> If x And ISENSE_FLAGS.ISENSE_NOBG Then</p><p> result = "No background parsing. "</p><p> End If</p><p> If x And ISENSE_FLAGS.ISENSE_NOQUERY Then</p><p> result = result + "No Intellisense queries in IDE. "</p><p> End If</p><p> If x And ISENSE_FLAGS.ISENSE_NCBRO Then</p><p> result = result + "No saving of NCB file. "</p><p> End If</p><p> End If</p><p> MsgBox(result)</p><p> End Sub</p><p> Sub DeleteNcbAndReload()</p><p> Dim name</p><p> Dim namesln</p><p> namesln = DTE.Solution.FullName()</p><p> If Len(namesln) > 4 Then</p><p> name = Left(namesln, Len(namesln) - 4) & ".ncb"</p><p> If MsgBox("This may take a while. Closing solution, deleting " & name & ", and reopening solution.", MsgBoxStyle.OkCancel) = MsgBoxResult.Ok Then</p><p> DTE.Solution.Close()</p><p> Kill(name)</p><p> MsgBox("NCB deleted", MsgBoxStyle.OkOnly)</p><p> DTE.Solution.Open(namesln)</p><p> End If</p><p> Else</p><p> MsgBox("No solution is currently loaded.", MsgBoxStyle.OkOnly)</p><p> End If</p><p> End Sub</p><p>End Module
檔案-〉關閉並返回,
右擊Intellisense宏選擇設為記錄項目。
工具-〉自訂-〉工具列-〉建立,
輸入一個你喜歡的名稱。
命令選項卡-〉類別-〉宏,
將Intellisense開頭的五個拖放至剛才建立的工具列內。
在按鈕上右擊可以重新命名並更改表徵圖。
各個按鈕的功能:
Intellisense On 恢複正常狀態,開啟Intellisense;
Intellisense Off 絕大多數Intellisense功能關閉,與重新命名feacp.dll效果幾乎相同;
Intellisense NoUpdate 禁止Intellisense資料庫的自動更新;
Intellisense Status 顯示當前的Intellisense設定狀態;
DeleteNcbAndReload 關閉解決方案,刪除ncb檔案,重載解決方案。
注意事項:
實踐證明,NoUpdate比Off選項更好;
各按鈕的修改是永久的,與解決方案無關;
當沒有解決方案載入時,修改是無效的。