C# WinForm:
我现在有这样一个需求:一个exe只运行一次,即当这个exe未运行时,你双击这个exe,就正常打开这个程序;
如果这个exe已经处于运行状态,当你再去双击这个exe时,要求将这个exe正处于运行状态的程序显示到桌面最前。
我参考了很多资料,觉得用互斥量Mutex处理较合适,下面是实现的代码:/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
bool isAppRunning = false;
Mutex mutex = new Mutex(true,Process.GetCurrentProcess().ProcessName,out isAppRunning);
if (!isAppRunning)
{
MessageBox.Show("本程序已经在运行了,请不要重复运行!");
Environment.Exit(1);
}
else
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
这样就实现了程序只运行一次的限制,但是美中不足的是:
当程序处于运行时,你再双击这个exe时是弹出MessageBox显示提示信息而已,
我想实现的是:当程序处于运行时,你再双击这个exe时,将已经处于运行状态的这个程序提到桌面最前。
不知道是否需要相关API,如FindWindow、SendMessage等。
类似以上代码而未解决将已运行程序提到桌面最前的请勿贴上来,希望给予帮助,谢谢。
我现在有这样一个需求:一个exe只运行一次,即当这个exe未运行时,你双击这个exe,就正常打开这个程序;
如果这个exe已经处于运行状态,当你再去双击这个exe时,要求将这个exe正处于运行状态的程序显示到桌面最前。
我参考了很多资料,觉得用互斥量Mutex处理较合适,下面是实现的代码:/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
bool isAppRunning = false;
Mutex mutex = new Mutex(true,Process.GetCurrentProcess().ProcessName,out isAppRunning);
if (!isAppRunning)
{
MessageBox.Show("本程序已经在运行了,请不要重复运行!");
Environment.Exit(1);
}
else
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
这样就实现了程序只运行一次的限制,但是美中不足的是:
当程序处于运行时,你再双击这个exe时是弹出MessageBox显示提示信息而已,
我想实现的是:当程序处于运行时,你再双击这个exe时,将已经处于运行状态的这个程序提到桌面最前。
不知道是否需要相关API,如FindWindow、SendMessage等。
类似以上代码而未解决将已运行程序提到桌面最前的请勿贴上来,希望给予帮助,谢谢。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货