У меня есть проблема, которую я пытаюсь получить название оконного путем этого имя процесса, и я не могу это сделать здесь то, что я пробовал:Получить заголовок окна по его имя процесса без главного окна
Process[] p = Process.GetProcessesByName("Acrobat");
Console.WriteLine(p[0].MainWindowTitle);
Console.ReadLine();
Но проблема в том, что я могу получить его только в том случае, если связанный процесс имеет главное окно. Как я могу заставить его работать?
Основная цель состоит в том, что я имею метод, названный BringToFront() Но этот метод запросит имя заголовка, который является «thenameofthePDF.pdf - Adobe Acrobat Pro (Да, акробат запущен с открытой PDF) I . хотел бы, чтобы перед моим окном Acrobat .. , но для этого мне нужно имя окна, как мой метод прошу подпись Вот весь код в данный момент:
class Program
{
[DllImport("User32.dll")]
public static extern Int32 SetForegroundWindow(int hWnd);
[DllImport("user32.dll")]
public static extern int FindWindow(string lpClassName, string lpWindowName);
private static void BringToFront(string className, string CaptionName)
{
SetForegroundWindow(FindWindow(className, CaptionName));
}
static void Main(string[] args)
{
// BringToFront("Acrobat", "mypdf.pdf - Adobe Acrobate Pro");
Process[] p = Process.GetProcesses();
foreach (var process in p)
{
Console.WriteLine(process.MainWindowTitle);
}
Console.ReadLine();
}
}
Вы хотите найти название окна, которое не существует? Вы внимательно подумали о том, что это значит? –
Я действительно не понимаю, почему он не работает, может ли программа иметь «подокна» без наличия «основного» окна? Почему он не работает, я уверен, что acrobat работает, имеет заголовок Windows и имеет графический интерфейс. –
Мы можем сделать лучше, если узнаем вашу общую цель - я предполагаю, что конечная цель заключается не только в том, чтобы иметь возможность сбрасывать название окна Acrobat на консоль - похоже, что это часть «решения» проблемы, t рассказал нам о - и вы, возможно, не решаете его правильно. –