Gibt es eine Möglichkeit, den HWnd-Zeiger von einer VSIX-Erweiterung auf das oberste Fenster von Visual Studio 2010 zu erhalten? (Ich möchte den Titel des Fensters ändern).HWnd von Visual Studio 2010
Antwort
Da es gute Chancen, dass Ihre VSIX Erweiterung wird im Prozess mit Visual Studio ausgeführt werden, sollten Sie dies versuchen:
System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle
(Hinweis, wenn Sie dies noch zu früh zu tun, die Sie erhalten VS Splash Bildschirm ...)
Ich nehme an, Sie möchten dies in C# programmatisch tun?
Sie benötigen diese P/Invoke in Ihrer Klasse zu definieren:
[DllImport("user32.dll")]
static extern int SetWindowText(IntPtr hWnd, string text);
dann einige Code, der dem folgenden ähnelt:
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 auf Prozess: http://msdn.microsoft.com/en-us/library/system.diagnostics.process.aspx
Doc auf P/Invoke: http://msdn.microsoft.com/en-us/library/aa288468%28VS.71%29.aspx
Probieren Sie diesen Code auf meinem lokalen, es scheint, den Fenstertitel zu setzen, aber Visual Studio überschreibt es unter vielen Bedingungen: Gewinnt den Fokus, betritt/verlässt den Debug-Modus ... Dies könnte mühsam sein.
Hinweis: Sie können den Fenstertitel direkt aus dem Process-Objekt abrufen, aber Sie können ihn nicht festlegen.
Sie die EnvDTE API können die HWnd des Hauptfensters erhalten: das Hauptfenster und ein Teil der Benutzersteuerungen
var hwndMainWindow = (IntPtr) dte.MainWindow.HWnd;
in Visual Studio 2010/2012, implementiert mit WPF. Sie können sofort das WPF-Fenster des Hauptfensters aufrufen und damit arbeiten. Ich schrieb die folgende Erweiterungsmethode dafür:
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. WebsiteSpark & Visual Studio 2010
- 2. Visual Studio 2010 Tastaturkürzel
- 3. Visual Studio 2010: Abhängigkeitsdiagramm
- 4. Visual Studio 2010-Designercodevorlage
- 5. Visual Studio 2010 deinstallieren
- 6. Visual Studio 2010 - RemovePreviousVersions
- 7. Visual Studio 2010 Klassendiagramm
- 8. Visual Studio 2010 Installation
- 9. Öffnen von Visual Studio 2010-Lösung In Visual Studio 2013
- 10. Visual Studio 2008-Projekte von Visual Studio 2010 ohne Konvertierung
- 11. Wie Visual Studio 2010-Erweiterungen
- 12. Alternative in Visual Studio 2010
- 13. Versionskontrolle in Visual Studio 2010?
- 14. QT und Visual Studio 2010
- 15. Drucken in Visual Studio 2010
- 16. Erstellen von DB-Problem, Visual Studio 2010
- 17. Verwendung von SCSF mit Visual Studio 2010
- 18. Visual Studio Pro 2010 - Modellieren von Projekten?
- 19. Übergeben von Befehlszeilenargumenten in Visual Studio 2010?
- 20. Verwenden von Doxygen mit Visual Studio 2010
- 21. visual studio 2010 & expression studio 4.0
- 22. Visual Studio 2010 Snippet Generator
- 23. Alternative zu Visual Studio 2010
- 24. Rechner Microsoft Visual Studio 2010
- 25. Visual Studio 2010 Team Explorer
- 26. Visual Studio 2010-Design ändern
- 27. Visual Studio 2010 C# Rasterformat
- 28. Visual Studio Express 2010-Lizenz
- 29. Visual Studio 2010 Intellisense Störungen
- 30. Projektreferenz Problem, Visual Studio 2010
Danke für die Informationen. Dies führte mich zu einer einfacheren Lösung. Process.GetCurrentProcess(). MainWindowHandle –
VS wird weiter über den Titel schreiben. Es wird hier diskutiert: http://stackoverflow.com/questions/577188/how-to-change-the-title-bar-text-of-visual-studio –