Existe-t-il un moyen d'obtenir le pointeur HWnd à la fenêtre supérieure de Visual Studio 2010 à partir d'une extension VSIX? (Je voudrais changer le titre de la fenêtre).HWnd de Visual Studio 2010
Répondre
Comme il y a de bonnes chances que votre extension VSIX sera en cours d'exécution en cours avec Visual Studio, vous devriez essayer ceci:
System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle
(Notez que si vous le faites trop tôt, vous aurez VS Splash écran ...)
Je suppose que vous voulez faire cela par programmation en C#?
Vous devez définir ce P/Invoke dans votre classe:
[DllImport("user32.dll")]
static extern int SetWindowText(IntPtr hWnd, string text);
Ensuite, ont un code qui ressemble à ce qui suit:
Process visualStudioProcess = null;
//Process[] allProcesses = Process.GetProcessesByName("VCSExpress"); // Only do this if you know the exact process name
// Grab all of the currently running processes
Process[] allProcesses = Process.GetProcesses();
foreach (Process process in allProcesses)
{
// My process is called "VCSExpress" because I have C# Express, but for as long as I've known, it's been called "devenv". Change this as required
if (process.ProcessName.ToLower() == "vcsexpress" ||
process.ProcessName.ToLower() == "devenv"
/* Other possibilities*/)
{
// We have found the process we were looking for
visualStudioProcess = process;
break;
}
}
// This is done outside of the loop because I'm assuming you may want to do other things with the process
if (visualStudioProcess != null)
{
SetWindowText(visualStudioProcess.MainWindowHandle, "Hello World");
}
Doc sur le processus: http://msdn.microsoft.com/en-us/library/system.diagnostics.process.aspx
Doc sur P/Invoke: http://msdn.microsoft.com/en-us/library/aa288468%28VS.71%29.aspx
En essayant ce code sur mon ordinateur local, il semble définir le titre de la fenêtre, mais Visual Studio l'écrase dans de nombreuses conditions: gagne le focus, entre/quitte le mode de débogage ... Cela peut être gênant.
Remarque: Vous pouvez obtenir le titre de la fenêtre directement à partir de l'objet Process, mais vous ne pouvez pas le définir.
Vous pouvez utiliser le EnvDTE API pour obtenir le hWnd de la fenêtre principale:
var hwndMainWindow = (IntPtr) dte.MainWindow.HWnd;
Dans Visual studio 2010/2012, la fenêtre principale et une partie des contrôles utilisateur implémenté en utilisant WPF. Vous pouvez immédiatement obtenir la fenêtre WPF de la fenêtre principale et travailler avec. J'ai écrit la méthode d'extension suivante pour cela:
public static Window GetWpfMainWindow(this EnvDTE.DTE dte)
{
if (dte == null)
{
throw new ArgumentNullException("dte");
}
var hwndMainWindow = (IntPtr)dte.MainWindow.HWnd;
if (hwndMainWindow == IntPtr.Zero)
{
throw new NullReferenceException("DTE.MainWindow.HWnd is null.");
}
var hwndSource = HwndSource.FromHwnd(hwndMainWindow);
if (hwndSource == null)
{
throw new NullReferenceException("HwndSource for DTE.MainWindow is null.");
}
return (Window) hwndSource.RootVisual;
}
- 1. visual studio 2010 architecte
- 2. Visual Studio 2010 - Datagridview
- 3. Visual Studio 2010 WPF
- 4. Visual Studio 2010 - RemovePreviousVersions
- 5. Débogueur Visual Studio 2010
- 6. Installation de Visual Studio 2010
- 7. Visual COBOL pour 2010 Visual Studio
- 8. visual studio 2010 problème d'installation
- 9. Site WebSpark & Visual Studio 2010
- 10. Visual Studio 2010 UML Ressources
- 11. Visual Studio 2010 debug minidump
- 12. chemin d'installation Visual Studio 2010
- 13. Visual Studio 2010 IDE question
- 14. Visual Studio 2010 Architecture outillage
- 15. snprintf et Visual Studio 2010
- 16. Visual Studio Ctrl-Backspace 2010
- 17. AJAX pour Visual Studio 2010
- 18. Visual Studio 2010 (Argument Exception)
- 19. Debugger.Break sur Visual Studio 2010
- 20. Visual Studio 2010 Team Explorer
- 21. Patches Visual Studio 2010 [Fix]
- 22. Visual Studio 2010 Migration Problème
- 23. sdl setup visual studio 2010
- 24. Visual Studio 2010 Inconvénients Intellisense
- 25. virtualization et visual studio 2010
- 26. Visual Studio 2010 Snippet Générateur
- 27. Visual Studio 2010 Editor UndoHistory
- 28. Visual Studio 2010 abandonné Wix?
- 29. Variable d'environnement Visual Studio 2010
- 30. Visual Studio 2010 (bêta 2) solution dans Visual Studio 2008
Merci pour l'information. Cela m'a conduit à une solution plus simple. Process.GetCurrentProcess(). MainWindowHandle –
VS continuera à écrire sur le titre. Il est discuté ici: http://stackoverflow.com/questions/577188/how-to-change-the-title-bar-text-of-visual-studio –