Czy istnieje sposób, aby uzyskać wskaźnik HWnd do górnego okna programu Visual Studio 2010 z rozszerzenia VSIX? (Chciałbym zmienić tytuł okna).HWnd z Visual Studio 2010
Odpowiedz
Ponieważ istnieją duże szanse, że rozszerzenie VSIX zostaną uruchomione w trakcie procesu z Visual Studio, należy spróbować tego:
System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle
(Uwaga, jeśli zrobisz to zbyt wcześnie, dostaniesz VS Splash ekran ...)
Zakładam, że chcesz to zrobić programowo w C#?
Musisz określić to P/Invoke wewnątrz swojej klasie:
[DllImport("user32.dll")]
static extern int SetWindowText(IntPtr hWnd, string text);
Potem jakiś kod, który wygląda podobnie do następującego:
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 na proces: http://msdn.microsoft.com/en-us/library/system.diagnostics.process.aspx
Doc na P/Wywołanie: http://msdn.microsoft.com/en-us/library/aa288468%28VS.71%29.aspx
Próbując tego kodu na moim lokalnym, wydaje się ustawić tytuł okna, ale Visual Studio nadpisuje go pod wieloma warunkami: zyskuje ostrość, wchodzi/opuszcza tryb debugowania ... To może być kłopotliwe.
Uwaga: Tytuł okna można pobrać bezpośrednio z obiektu Process, ale nie można go ustawić.
można użyć EnvDTE API uzyskać hWND okna głównego:
var hwndMainWindow = (IntPtr) dte.MainWindow.HWnd;
W Visual Studio 2010/2012, głównego okna i część kontroli użytkowników realizowane przy użyciu WPF. Możesz od razu uzyskać okno główne WPF i pracować z nim. W tym celu napisałem następującą metodę rozszerzenia:
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. UnInstall Visual Studio 2010
- 3. Visual Studio 2010 - odinstalować NuGet
- 4. Visual Studio 2010 wolno ładować
- 5. Visual Studio 2010 wiersze wiersz
- 6. /LinkResource w Visual Studio 2010
- 7. Visual Studio 2010 Team Explorer
- 8. Ograniczenia Visual Studio 2010 Express
- 9. GTK # w Visual Studio 2010
- 10. Odświeżenie programu Visual Studio 2010
- 11. intellisense z jquery w visual studio 2010
- 12. Zmiana motywu Visual Studio 2010
- 13. Visual Studio 2010 referencje warunkowe
- 14. Wyjątek podczas wdrażania w SharePoint 2010 z Visual Studio 2010
- 15. Visual Studio 2010 (beta 2) rozwiązanie w Visual Studio 2008
- 16. Motyw Visual Studio 2010 dla Visual Studio 2012?
- 17. Visual Studio 2010/2012 Git Plugin
- 18. Visual Studio 2010 ciągle zmienia domyślną przeglądarkę.
- 19. Visual Studio 2010 Professional Przycisk Play wyłączony
- 20. Wyszukiwanie potomków klas w Visual Studio 2010
- 21. Testowanie obciążenia w Visual Studio 2010
- 22. Visual Studio 2008/2010 Code Bookmarks Backup
- 23. Visual Studio 2010 i std :: funkcja
- 24. HTML formatowanie w Visual Studio 2010
- 25. Visual Studio 2010 i TFS niechciane wymeldowanie
- 26. Visual Studio 2010 transformacje web.config (target TransformWebConfig)
- 27. Visual Studio 2010 Narzędzie opóźnienia intellisense tooltip
- 28. Mercurial .hgignore dla Visual Studio 2010 projektów
- 29. ReportViewer 11 (2012) Visual Studio 2010
- 30. Zamówienie budowy projektu w Visual Studio 2010?
Dzięki za informację. To doprowadziło mnie do prostszego rozwiązania. Process.GetCurrentProcess(). MainWindowHandle –
VS będzie kontynuować pisanie nad tytułem. Jest to omówione tutaj: http://stackoverflow.com/questions/577188/how-to-change-the-title-bar-text-of-visual-studio –