2017-11-20 46 views
0

Ich arbeite an einer Visual Studio-Erweiterung, die davon profitieren würde, geladen zu werden, wenn die Startseite der IDE geöffnet wird, aber ich finde kein Ereignis, das ausgelöst wird, wenn die Startseite geöffnet wird, die meine Erweiterung abonnieren kann.Gibt es ein Visual Studio-Startseitenereignis, das von einer Visual Studio-Erweiterung abonniert werden kann?

Ich weiß, dass ich das folgende Attribut zu meinem vsix-Paket hinzufügen kann, das ausgelöst wird, wenn die IDE geöffnet wird, aber ich suche nach etwas spezifischeren auf der Startseite selbst.

Gibt es ein Ereignis, das ausgelöst wird, wenn entweder die Standardstartseite oder eine benutzerdefinierte Startseite geöffnet ist?

+0

Da der Benutzer aus, die jede Startseite entscheiden kann, ich denke, es ist nicht möglich – ErikEJ

Antwort

0

Ich habe das am Ende durch das Abonnieren der WindowVisibilityEvents (mit freundlicher Genehmigung von diesem alten Beitrag von Carlos Quintero https://www.mztools.com/articles/2011/MZ2011010.aspx) und Überprüfen des Fensters Typ und Titel, wenn es sichtbar wurde.

Nachfolgend ist eine abgespeckte Version des Codes in meiner VSIX Paketklasse:

protected override void Initialize() 
    { 
     base.Initialize(); 
     IServiceContainer serviceContainer = this as IServiceContainer; 
     EnvDTE.DTE dte = serviceContainer.GetService(typeof(SDTE)) as EnvDTE.DTE; 
     var events2 = (EnvDTE80.Events2)dte.Events; 
     EnvDTE80.WindowVisibilityEvents toolBoxWindowVisibilityEvents = events2.get_WindowVisibilityEvents(); 
     toolBoxWindowVisibilityEvents.WindowShowing += WindowVisibilityEvents_WindowShowing; 
    } 

    private void WindowVisibilityEvents_WindowShowing(Window window) 
    { 
     if (window.Type == vsWindowType.vsWindowTypeToolWindow && window.Caption == "Start Page") 
     { 
      //Start page is opening... 
     } 
    } 
1

Sie können DTE.Events abonnieren. WindowEvents. WindowCreated Ereignis und überprüfen Sie, dass der Fenstertitel Start Page ist.

+0

ist habe ich versucht, diese aber das war nicht erfolgreich - das liegt vielleicht an mir, aber da ich eine alternative Lösung gefunden habe (siehe meine eigene Antwort unten), habe ich das nicht verfolgt. –

Verwandte Themen