8

実行中のプロセスのパスを名前で取得するにはどうすればよいですか? たとえば、「メモ帳」という名前のプロセスが実行されていることを知っていて、そのパスを取得したいとします。他のすべてのプロセスをループせずにパスを取得する方法は?

この方法ではありません!

using System.Diagnostics;

foreach (Process PPath in Process.GetProcesses())
{
    if (PPath.ProcessName.ToString() == "notepad")
    {
        string fullpath = PPath.MainModule.FileName;
        Console.WriteLine(fullpath);
    }
}
4

3 に答える 3

10

GetProcessesByName次の方法を使用するこの方法のようなものを試してください:

public string GetProcessPath(string name)
{
    Process[] processes = Process.GetProcessesByName(name);

    if (processes.Length > 0)
    {
        return processes[0].MainModule.FileName;
    }
    else
    {
        return string.Empty;
    }
}

ただし、複数のプロセスが同じ名前を持つ可能性があるため、さらに掘り下げる必要がある場合があることに注意してください。私はいつもここで最初のパスを返しています。

于 2012-08-14T21:43:53.163 に答える
4

.Net2.0に存在したメソッドGetProcessesByNameがあります。

foreach (Process PPath in Process.GetProcessesByName("notepad"))
{
    string fullpath = PPath.MainModule.FileName;
    Console.WriteLine(fullpath);
}
于 2012-08-14T21:44:42.903 に答える
2

実際に取ることができるアプローチは 2 つあります。

名前で処理できます:

Process result = Process.GetProcessesByName( "Notepad.exe" ).FirstOrDefault( );

または、あなたがしていることを行うことができますが、linqを使用します

Process element = ( from p in Process.GetProcesses()
                    where p.ProcessName == "Notepad.exe"
                    select p ).FirstOrDefault( );
于 2012-08-14T21:54:11.610 に答える