2016-04-23 5 views
1

Ich habe gerade angefangen, C# und WPF zu lernen. Gibt es eine Möglichkeit, den Fenstertyp zu erhalten? Zum Beispiel verwende ich dies den Text auf dem Fenster zu erhalten:Typ des Fensters in lesbarem Format

[DllImport("user32.dll")] 
static extern int GetWindowText(IntPtr hWnd, StringBuilder text, int count); 

Das gibt: „Stellen Sie eine Frage - Stack-Überlauf - Google Chrome“

Ich will nur „Google Chrome“ erhalten . Ich habe versucht

[DllImport("User32.Dll")] 
public static extern int GetClassName (IntPtr hwnd, StringBuilder lpClassName, int nMaxCount); 

Dies gibt "Chrome_WidgetWin_1" zurück. Gibt es einen besseren Ansatz, den ich vermisse?

Antwort

1

Es ist kein "Typ", wie Sie beschreiben, dem Fenster zugewiesen. Die nächste Sache wäre der Klassenname, den Sie bereits abgerufen haben.

Sie können den Titeltext jedoch analysieren, um nur den letzten Wert zu extrahieren, wenn alle Fenster dem gleichen Titeltextmuster von "etwas Text" folgen - "was auch immer" - "Google Chrome". Die Anzahl der Striche oder was auch immer nicht so lange egal, da es ein Bindestrich vor „Google Chrome“ können Sie es als solche

string windowTypeName = string.Split('-').LastOrDefault(); 

extrahieren Dies wird zurückkehren „Google Chrome“ oder null, wenn kein Titeltext ist oder streichen Sie im Titeltext.

bearbeiten

Sie auch den Namen des Prozesses mit dem Fenster zugeordnet bekommen konnte, und wenn es chrome.exe dann ist kann man davon ausgehen, nur die Fenstertyp ist „Google Chrome“

+0

Ja, ich nehme an, das ist die bester Weg – user3918985

Verwandte Themen