2009-08-26 13 views
5

Znajduję wbudowany program Visual Studio Explorer mniej niż odpowiedni, zwłaszcza że więcej zestawów SDK, z którymi pracuję, ma najbardziej aktualną zawartość on-line. Naciśnięcie F1 uruchamia Eksplorator Dokumentów zwykle z czymś niepomocnym i nie nadaje się już dla mnie.Załaduj adres URL wyszukiwania w przeglądarce z programu Visual Studio

Czy jest jakiś sposób, że na naciśnięcie kombinacji klawiszy w Visual Studio:

  • domyślna przeglądarka otwiera URL wyszukiwarki
  • zapytań używane jest słowo kluczowe pod prąd pozycja kursora
  • filtr dodaje takie jak site:msdn.microsoft.com

nie wiem nic na temat makr w VS, ale p wiedzieć na nowo to jest to, czego potrzebuję. Czy ktoś wie, jak to skonfigurować? teh codez byłoby miło!

Odpowiedz

5

Oto kolejna wersja (na podstawie odpowiedzi Alexa), który będzie również wybrać bieżące słowo, które są włączone. Bardziej przypomina typową pomoc F1.

Imports System 
Imports EnvDTE 
Imports EnvDTE80 
Imports EnvDTE90 
Imports System.Diagnostics 

Public Module Search 
    Sub GoogleSearch() 
     AnySearch("http://www.google.com/search?q=.net+") 
    End Sub 

    Sub BingSearch() 
     AnySearch("http://www.bing.com/search?q=") 
    End Sub 

    Private Sub AnySearch(ByVal searchUrl) 
     Dim strUrl As String 
     Dim selection As String = GetSelection() 
     If selection <> "" Then 
      strUrl = searchUrl + selection 
      DTE.ExecuteCommand("nav", strUrl & " /ext") 
     Else 
      MsgBox("Select text to search for.") 
     End If 
    End Sub 

    Private Function GetSelection() As String 
     Dim selection As TextSelection = DTE.ActiveDocument.Selection() 
     If selection.Text <> "" Then 
      Return selection.Text 
     Else 
      DTE.ExecuteCommand("Edit.SelectCurrentWord") 
      selection = DTE.ActiveDocument.Selection() 
      Return selection.Text 
     End If 
    End Function 
End Module 
+0

Awesome! Próbowałem się dowiedzieć, jak to zrobić i nie mogłem tego zdobyć. –

+0

To nie działa na mojej instalacji VS 2005 - po prostu nie działa - brak komunikatu o błędzie. Jeśli zmienię DTE.ExecuteCommand na System.Diagnostics.Process.Start (strUrl), otworzy się adres URL w domyślnej przeglądarce, ale przeglądarka nie otrzyma fokusu. Co powinna zrobić "nawigacja". Czy to jest udokumentowane w dowolnym miejscu? I "/ ext", to wszystko wygląda jak magia nie wspomniana na stronie msdn dla ExecuteCommand. Jakieś pomysły, jak to naprawić? Dzięki. –

+0

Przepraszamy za brak reakcji, Andrew. Dawno już przeszedłem do wersji Visual Studio, która niestety już nie obsługuje makr/skryptów. –

2

Korzystanie link Preet provided wymyśliłem ten, który uruchamia domyślną przeglądarkę:

Imports System 
Imports EnvDTE 
Imports EnvDTE80 
Imports EnvDTE90 
Imports System.Diagnostics 

Public Module Search 
    Sub GoogleSearch() 
     AnySearch("http://www.google.com/search?q=") 
    End Sub 

    Sub BingSearch() 
     AnySearch("http://www.bing.com/search?q=") 
    End Sub 

    Private Sub AnySearch(ByVal searchUrl) 
     Dim strUrl As String 
     Dim selection As TextSelection = DTE.ActiveDocument.Selection() 
     If selection.Text <> "" Then 
      strUrl = searchUrl + selection.Text 
      DTE.ExecuteCommand("nav", strUrl & " /ext") 
     Else 
      MsgBox("Select text to search for.") 
     End If 
    End Sub 
End Module 
1

Wymyśliłem ten. Jak mówi, będziesz musiał dodać odniesienie do "System.Web" dla HttpUtility.UrlEncode. W kodzie jest też kilka "opcji". Części pobrane z http://www.codinghorror.com/blog/2005/10/google-search-vsnet-macro.html, ale znacznie ulepszone (IMHO).

Imports System 
Imports EnvDTE 
Imports EnvDTE80 
Imports EnvDTE90 
Imports System.Diagnostics 

Public Module HelpFindInBrowser 
    Sub HelpFindInBrowser() 
     Dim s As String = ActiveWindowSelection().Trim() 
     If s.Length > 0 Then 
      OpenURL("http://www.google.com/search?q=" & _ 
       Web.HttpUtility.UrlEncode(s)) 
      '-------------------------------------------------------------------------- 

      'You will need to add a reference to 'System.Web' for HttpUtility.UrlEncode !!! 

      '-------------------------------------------------------------------------- 
     End If 
    End Sub 

    Private Sub OpenURL(ByVal inURL As String) 
     'specify a non default browser 
     'DTE.ExecuteCommand("Tools.Shell", "notepad.exe " & inURL) 

     'use the default browser: 
     DTE.ExecuteCommand("nav", inURL & " /ext") 

     'to have it in a new visual studio window: 
     'DTE.ItemOperations.Navigate(inURL, EnvDTE.vsNavigateOptions.vsNavigateOptionsNewWindow) 

     'to have it in the default visual studio browser window: 
     'DTE.ItemOperations.Navigate(inURL, EnvDTE.vsNavigateOptions.vsNavigateOptionsDefault) 
    End Sub 

    'large part taken from http://www.codinghorror.com/blog/2005/10/google-search-vsnet-macro.html 
    Private Function ActiveWindowSelection() As String 
     If DTE.ActiveWindow.ObjectKind = EnvDTE.Constants.vsWindowKindOutput Then 
      Return OutputWindowSelection() 
     End If 
     If DTE.ActiveWindow.ObjectKind = "{57312C73-6202-49E9-B1E1-40EA1A6DC1F6}" Then 
      Return HTMLEditorSelection() 
     End If 
     Return SelectionText(DTE.ActiveWindow.Selection) 
    End Function 

    Private Function HTMLEditorSelection() As String 
     Dim hw As HTMLWindow = ActiveDocument.ActiveWindow.Object 
     Dim tw As TextWindow = hw.CurrentTabObject 
     Return SelectionText(tw.Selection) 
    End Function 

    Private Function OutputWindowSelection() As String 
     Dim w As Window = DTE.Windows.Item(EnvDTE.Constants.vsWindowKindOutput) 
     Dim ow As OutputWindow = w.Object 
     Dim owp As OutputWindowPane = ow.OutputWindowPanes.Item(ow.ActivePane.Name) 
     Return SelectionText(owp.TextDocument.Selection) 
    End Function 

    Private Function SelectionText(ByVal sel As EnvDTE.TextSelection) As String 
     If sel Is Nothing Then 
      Return "" 
     End If 

     Dim s As String 

     If sel.Text.Length = 0 Then 
      s = GetWordUnderCursor(sel) 
     Else 
      s = sel.Text 
     End If 
     'We could limit the text to some minimal size 
     'If sel.Text.Length <= 2 Then 
     'Return "" 
     'End If 
     Return s 
    End Function 

    Private Function GetWordUnderCursor(ByVal sel As EnvDTE.TextSelection) As String 
     Dim ptStart As EnvDTE.EditPoint = sel.ActivePoint.CreateEditPoint() 

     Dim theSelectToRight As Boolean = False 

     If (ptStart.AtStartOfLine) Then 
      theSelectToRight = True 
     Else 
      'See if there's a space to the left of ptStart 
      'not at start of line, so moving one left is safe 
      ptStart.CharLeft() 

      If (ptStart.GetText(1).Trim() = "") Then 
       theSelectToRight = True 
      End If 

      'Back to original position 
      ptStart.CharRight() 
     End If 


     If (Not theSelectToRight) Then 
      ptStart.WordLeft(1) 
     End If 

     Dim ptEnd As EnvDTE.EditPoint = ptStart.CreateEditPoint() 
     ptEnd.WordRight(1) 

     Return ptStart.GetText(ptEnd) 
    End Function 

End Module 
Powiązane problemy