プロセス名でウィンドウのタイトルを取得しようとしている問題があり、ここで試したことはできません:
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();
}
}