Можно ли получить собственное имя процесса? - PullRequest
4 голосов
/ 08 декабря 2011

Я хочу заменить cMyProcessName (в моем примере) программным, я не хочу использовать строковую константу!

Это код:

private const string cMyProcessName = "MyProcessName";

if (GetProcessCount(cMyProcessName) > 1)
{
    System.Threading.Thread.Sleep(2000); //Give it some time (if just restarted)
    //**************************************************************//
    if (GetProcessCount(cMyProcessName) > 1)
    {
        MessageBox.Show("MyProcessName is already running. Exiting.", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
        return;
    }
    //**************************************************************//
}

public static int GetProcessCount(string processName)
{
    Process[] ps = Process.GetProcessesByName(processName);

    return ps.Length;
}

Ответы [ 3 ]

7 голосов
/ 08 декабря 2011

Попробуйте с этим:

Process p = Process.GetCurrentProcess();    
string cMyProcessName = p.ProcessName;
1 голос
/ 08 декабря 2011

Вы, вероятно, можете значительно упростить свой код, используя:

Process currentProcess = Process.GetCurrentProcess();

см. Здесь: Метод Process.GetCurrentProcess

1 голос
/ 08 декабря 2011

Метод Process.GetCurrentProcess - это то, что вам нужно:

string processName = Process.GetCurrentProcess().ProcessName;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...