我有一个问题我试图通过它的进程名称来获取一个窗口的标题,但我不能在这里做我尝试过的事情:
Process[] p = Process.GetProcessesByName("Acrobat");
Console.WriteLine(p[0].MainWindowTitle);
Console.ReadLine();
但问题是,只有在关联进程确实有主窗口时,我才能得到它。我怎样才能让它工作?
主要目标是我有一个名为 BringToFront() 的方法但此方法要求标题名称为“thenameofthePDF.pdf - Adobe Acrobat Pro(是的,acrobat 正在使用打开的 pdf 运行)我想带到前面我的 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();
}
}