2016-04-23 7 views
1

Я только начал изучать C# и WPF. Есть ли способ получить тип окна? Например, я использую это, чтобы получить текст на окне:Получить тип окна в читаемом формате

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

Это возвращает: «Задать вопрос - Переполнение стека - Google Chrome»

Я хочу только получить «Google Chrome» , Я попробовал

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

Это возвращает «Chrome_WidgetWin_1». Есть ли лучший подход, который мне не хватает?

ответ

1

Существует не тип, который вы описываете для окна. Наиболее близким будет имя класса, которое вы уже получили.

Вы можете разобрать текст заголовка, хотя бы просто извлечь последнее значение, если все окна будут следовать одному и тому же шаблону текста заголовка «некоторый текст» - «что угодно» - «Google Chrome». Количество черточек или то, что не имеет значения до тех пор, пока существует тир перед «Google Chrome» вы можете извлечь его в качестве такого

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

Это будет возвращать «Google Chrome» или ноля, если нет текста заголовка или тире в тексте заголовка.

Редактировать

Вы можете также получить имя процесса, связанного с окном, и если это chrome.exe, то вы можете просто предположить тип окна «Google Chrome»

+0

Да, я полагаю, что это лучший способ – user3918985

Смежные вопросы