3

アクティブなフォアグラウンドウィンドウの実行可能ファイルのパスを取得したいと思います。

私はすでにフォアグラウンドウィンドウのハンドラーを持っています:

[DllImport("user32.dll")]
    static extern IntPtr GetForegroundWindow();
IntPtr handlerAppActual = GetForegroundWindow();

そして、ショートカットのように、その実行可能ファイルのパスを取得したいと思います。(例:C:\ application \ application.exe)

なぜこれが必要なのですか?後でそれを使用して、次のように、そのプロセスの呼び出しでアプリケーションを自動的に実行します。

Process process = new Process();
process.StartInfo.FileName = @parametros[0];
process.Start();

ここで、「parametros[0]」はファイルのパスです。

フォアグラウンドウィンドウのアプリケーションのパスを尋ねていますが、必要なことを実行する他の方法を知っている場合(フォアグラウンドアプリケーションのメインプロセスを取得して後で実行する)、それを聞いてください。

ありがとうと敬礼!!!

4

2 に答える 2

1

System.Diagnostics.Processクラスを見てください。そのプロパティを使用しMainWindowHandleて、プロセスのウィンドウハンドルを要求し、それを取得したウィンドウのハンドルと比較できます。

システムで実行されているすべての利用可能なプロセスのリストを取得するには、Process.GetProcesses ()

一致するプロセスオブジェクトがある場合は、Process.MainModule.FileNameプロパティを使用して実行可能ファイルのパスを取得します。

于 2010-02-15T12:07:27.240 に答える
0

GetWindowThreadProcessIdを使用してプロセスIDを取得し、 OpenProcessを使用してプロセスIDからプロセスハンドルを取得してから、ハンドルでpsapiメソッドGetProcessImageFileNameを使用して実行可能ファイルへのパスを取得できます。

または(フランクの回答に基づく)、プロセスIDを取得したら、オブジェクトインスタンスのプロパティを使用Process.GetProcessById(pid)してから使用できます。この方法では、p / invokeを実行するだけで、OpenProcess/GetProcessImageFileNameを使用する必要はありません。MainModule.FileNameProcessGetWindowThreadProcessId

于 2010-02-15T12:05:33.960 に答える