#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». Изображение, показывающее это, можно увидеть ниже:
В настоящее время я попытался захватить заголовок окна с помощью дескриптора, но я не совсем думаю, что у меня это получилось. Любая помощь будет принята с благодарностью. Спасибо вам всем!
Я должен также отметить, что способ, которым я обычно захватываю дескрипторы окон, использует элементы 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. Ты пробовал 🙂 Лол ( вздох ). — Хорошо, если вы нашли решение, опубликуйте его как ответ.