Получить заголовок окна, используя класс с тем же именем класса?

#c# #winforms #window #handle #titlebar

#c# #winforms #окно #обрабатывать #Строка заголовка

Вопрос:

ОТВЕТ: Получить процессы, запущенные в данный момент, с помощью Process.GetProcesses(); и хочет, чтобы все процессы фильтровались через них, проверяя, содержат ли они что-либо, что может ссылаться на медиаплеер, использующий оператор and if и Process .MainWindowTitle .Содержит («Кое-что о медиаплеере»);

Привет, пользователи Stack Overflow!

В настоящее время я сталкиваюсь с проблемой разработки моей программы. Я пытаюсь получить текущий текст окна из Clementine — медиаплеера. Обычно я получаю заголовки окон следующим образом:

 IntPtr ClementineWindow = FindWindow("QWidget", null);
string CurrentSong = new string((char)0, 100);
int WindowTitle = GetWindowText(ClementineWindow, CurrentSong, CurrentSong.Length);
 

Но после изучения он либо вернет число (0), либо ничего. Я заметил в WinSpy , что многие дочерние окна используют одно и то же имя класса «QWidget». Изображение, показывающее это, можно увидеть ниже:

https://i.imgur.com/ss6qCi8.png

В настоящее время я попытался захватить заголовок окна с помощью дескриптора, но я не совсем думаю, что у меня это получилось. Любая помощь будет принята с благодарностью. Спасибо вам всем!

Я должен также отметить, что способ, которым я обычно захватываю дескрипторы окон, использует элементы FindWindow и GetWindowText из библиотеки DLL user32.

Комментарии:

1. Вы пробовали что-то вроде var proc = Process.GetProcessesByName("TheProcessName").FirstOrDefault(p => p.Id > 4 amp;amp; p.MainWindowHandle != IntPtr.Zero) , посмотреть, получите ли вы результат, а затем прочитать proc?.MainWindowTitle . У других процессов может не быть окна. В противном случае вы вызываете цикл для набора процессов, которые имеют один. Или посмотрите на детали процесса и посмотрите, позволяет ли один или несколько выделять окно, которое вы ищете. Или используйте автоматизацию пользовательского интерфейса.

2. Я попробую это и посмотрю, как это получится. Спасибо за быстрый ответ.

3. Спасибо, Джими! Я изменил то, что вы сказали, и немного повозился, и это работает отлично.

4. Ты пробовал 🙂 Лол ( вздох ). — Хорошо, если вы нашли решение, опубликуйте его как ответ.