2

2つのPDFドキュメントがあり、それらをacrobatFineReaderで開いたとします。だから私は2つの異なるウィンドウを持っています。しかし、私がこのコードを使用するとき:

foreach (Process p in Process.GetProcesses("."))
{
    try
    {
        Console.WriteLine("\r\n");
        Console.WriteLine("\r\n Window Title:" + p.MainWindowTitle.ToString());
        Console.WriteLine("\r\n Process Name:" + p.ProcessName.ToString());
        Console.WriteLine("\r\n Window Handle:" + p.MainWindowHandle.ToString());
        Console.WriteLine("\r\n Memory Allocation:" + p.PrivateMemorySize64.ToString());
    }
    catch { }
}

最後に選択したacrobatのウィンドウのみが表示されます。しかし、私はそれらの両方が必要です、ありがとう。

4

1 に答える 1

4

Process、各ウィンドウではなく、「メイン」ウィンドウ ハンドルのみを提供します。

ただし、これは Windows API と PInvoke を介して実現できます。 EnumWindowsを使用すると、システムで開いているウィンドウを列挙できます。その後、 GetWindowThreadProcessIdを使用して、ウィンドウがプロセスに属しているかどうかを確認できます。

その時点で、プロセスの各ウィンドウのウィンドウ ハンドルが得られます。ハンドルを使用すると、 GetWindowTextを呼び出してウィンドウ タイトルを取得できます。

于 2012-07-10T19:51:31.023 に答える