2011-12-08 55 views
1

我想替换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; 
} 
+0

可能重复(http://stackoverflow.com/问题/ 3545240/prevent-ac-sharp-application-from-running-more-one-instance) –

+0

(事实并非如此,我只想要进程名称) – Niklas

回答

4

试试这个:

Process p = Process.GetCurrentProcess();  
string cMyProcessName = p.ProcessName; 
+0

你试过这段代码吗?你真的可以将它分配给一个const吗? –

+0

不可能...你不能有一个const动态分配(或它不再是一个常量) –

+0

对不起,我离开了const ... – aleroot

0

使用Process.GetCurrentProcess()从System.Diagnostics程序

0

你也许可以通过简化你的代码非常:

Process currentProcess = Process.GetCurrentProcess(); 

在这里看到:Process.GetCurrentProcess Method

的[防止C#应用程序运行多个实例]
相关问题