6个回答
展开全部
Program.cs
using System;
using System.Windows.Forms;
namespace SMS
{
static class Program
{
//private static System.Threading.Mutex mutex;
public static System.Threading.Mutex Run;
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
bool noRun = false;
Run = new System.Threading.Mutex(true, "SmsProgram", out noRun);
//检测是否已经运行
if (noRun)
{
Run.ReleaseMutex();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//创建登录窗体的实例
FormLogin fml = new FormLogin();
//设置在屏幕中央显示
fml.StartPosition = FormStartPosition.CenterScreen;
//启动程序
Application.Run(fml); ;
}
else
{
MessageBox.Show("程序已运行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
Application.Exit();
}
}
}
}
using System;
using System.Windows.Forms;
namespace SMS
{
static class Program
{
//private static System.Threading.Mutex mutex;
public static System.Threading.Mutex Run;
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
bool noRun = false;
Run = new System.Threading.Mutex(true, "SmsProgram", out noRun);
//检测是否已经运行
if (noRun)
{
Run.ReleaseMutex();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//创建登录窗体的实例
FormLogin fml = new FormLogin();
//设置在屏幕中央显示
fml.StartPosition = FormStartPosition.CenterScreen;
//启动程序
Application.Run(fml); ;
}
else
{
MessageBox.Show("程序已运行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
Application.Exit();
}
}
}
}
展开全部
方法很多,比如在program.cs里
[STAThread]static void Main() { bool isAppRunning = false;
System.Threading.Mutex
mutex = new
System.Threading.Mutex(
true,
System.Diagnostics.Process.GetCurrentProcess().ProcessName,
out isAppRunning); if (!isAppRunning) {
MessageBox.Show("本程序已经在运行了,请不要重复运行!");
Environment.Exit(1); } else
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1()); }}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Mutex mutex = new Mutex(false, "ThisShouldOnlyRunOnce");
bool Running = !mutex.WaitOne(0, false);//这句很关键
if (!Running)
Application.Run(new 要启动的窗体());
else
MessageBox.Show("应用程序已经启动!");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
新建类OneInstance.cs,代码如下:
class OneInstance
{
public static bool IsFirst(string appId)
{
bool ret = false;
if (OpenMutex(0x1F0001, 0, appId) == IntPtr.Zero)
{
CreateMutex(IntPtr.Zero, 0, appId);
ret = true;
}
return ret;
}
[DllImport("Kernel32.dll", CharSet = CharSet.Auto)]
private static extern IntPtr OpenMutex(uint dwDesiredAccess, int bInheritHandle, string lpName
);
[DllImport("Kernel32.dll", CharSet = CharSet.Auto)]
private static extern IntPtr CreateMutex(IntPtr lpMutexAttributes, int bInitialOwner, string lpName
);
}
在Program.cs中检查当前应用是否已经运行:
if (OneInstance.IsFirst("YOUR_APP_ID"))
{
Application.Run(new Form1());
}
else {
MessageBox.Show ("警告:程序正在运行中! 请不要重复打开程序!","程序错误提示:",MessageBoxButtons.OK,MessageBoxIcon.Stop);
return;
}
class OneInstance
{
public static bool IsFirst(string appId)
{
bool ret = false;
if (OpenMutex(0x1F0001, 0, appId) == IntPtr.Zero)
{
CreateMutex(IntPtr.Zero, 0, appId);
ret = true;
}
return ret;
}
[DllImport("Kernel32.dll", CharSet = CharSet.Auto)]
private static extern IntPtr OpenMutex(uint dwDesiredAccess, int bInheritHandle, string lpName
);
[DllImport("Kernel32.dll", CharSet = CharSet.Auto)]
private static extern IntPtr CreateMutex(IntPtr lpMutexAttributes, int bInitialOwner, string lpName
);
}
在Program.cs中检查当前应用是否已经运行:
if (OneInstance.IsFirst("YOUR_APP_ID"))
{
Application.Run(new Form1());
}
else {
MessageBox.Show ("警告:程序正在运行中! 请不要重复打开程序!","程序错误提示:",MessageBoxButtons.OK,MessageBoxIcon.Stop);
return;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-03-05
展开全部
你应该要的是单例模式,自己定义一个窗体类继承于系统的窗体类,并定义成单例模式。
代码未验证,我瞎写的。
public sealed class FormOnly:Form
{
private readonly static FormOnly form =new FormOnly();
private FormOnly() { }
public static FormOnly GetInstance()
{ return form; }
}
//调用时
FormOnly form=FormOnly.GetInstance()
form.show()
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询