¿Hay alguna manera de colocar el puntero HWnd en la ventana superior de Visual Studio 2010 desde una extensión VSIX? (Me gustaría cambiar el título de la ventana).HWnd of Visual Studio 2010
Respuesta
Puesto que hay buenas posibilidades de que su extensión VSIX se ejecuta en proceso con Visual Studio, debe intentar esto:
System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle
(Tenga en cuenta si lo hace demasiado pronto, obtendrá VS Splash pantalla ...)
Supongo que quiere hacer esto programáticamente en C#?
Tendrá que definir esta P/Invoke dentro de su clase:
[DllImport("user32.dll")]
static extern int SetWindowText(IntPtr hWnd, string text);
A continuación, tienen un código que es similar al siguiente:
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 al proceso: una http://msdn.microsoft.com/en-us/library/system.diagnostics.process.aspx
Doc en P/invocar: http://msdn.microsoft.com/en-us/library/aa288468%28VS.71%29.aspx
Probando este código en mi local, parece establecer el título de la ventana, pero Visual Studio lo sobrescribe bajo muchas condiciones: gana foco, ingresa/abandona el modo de depuración ... Esto podría ser problemático.
Nota: Puede OBTENER el título de la ventana directamente desde el objeto Proceso, pero no puede configurarlo.
puede utilizar el EnvDTE API para obtener el HWnd de la ventana principal:
var hwndMainWindow = (IntPtr) dte.MainWindow.HWnd;
En Visual Studio 2010/2012, la ventana principal y parte de los controles de usuario implementado usando WPF. Puede obtener inmediatamente la ventana WPF de la ventana principal y trabajar con ella. Escribí el siguiente método de extensión para esto:
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 - RemovePreviousVersions
- 2. Visual Studio 2010 "Mancha"
- 3. Desinstalar Visual Studio 2010
- 4. IronScheme en Visual Studio 2010
- 5. Compilación Qt - Visual Studio 2010
- 6. Visual Studio 2010 - Desinstalar NuGet
- 7. WebsiteSpark y Visual Studio 2010
- 8. GTK # en Visual Studio 2010
- 9. Ctrl-Retroceso Visual Studio 2010
- 10. alternativa a visual studio 2010
- 11. Visual Studio 2010 fragmentos Generador
- 12. ExtJS en Visual Studio (2010)
- 13. /LinkResource en Visual Studio 2010
- 14. visual studio 2010 referencias condicionales
- 15. Visual Studio 2010: ProjectItem disponible
- 16. instalación de Visual Studio 2010
- 17. QT y Visual Studio 2010
- 18. snprintf y Visual Studio 2010
- 19. apertura en Visual Studio 2010
- 20. Visual Studio 2010 larga depuración
- 21. Visual Studio 2010 Pro - SuppressMessage
- 22. Java en Visual Studio 2010?
- 23. Visual Studio 2010 molestias Intellisense
- 24. VB6 en Visual Studio 2010
- 25. problema con Visual Studio 2010
- 26. Visual Studio 2010 Team Explorer
- 27. ¿Visual Studio 2010 RC funciona bien con Visual Studio 2008?
- 28. Visual Studio 2012 en comparación con Visual Studio 2010 (delta)
- 29. Directorios de origen en Visual Studio 2010
- 30. Error Visual Studio 2010 Designer en ejecución
Gracias por la información. Esto me llevó a una solución más simple. Process.GetCurrentProcess(). MainWindowHandle –
VS seguirá escribiendo sobre el título. Se trata aquí: http://stackoverflow.com/questions/577188/how-to-change-the-title-bar-text-of-visual-studio –