问题:winform程序,如果不另加处理的话,每次双击生成的exe文件都会运行。如图:
以前没做过处理,就是这样的问题。
解决办法:修改Program.cs文件
修改如下:
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Threading;
using System.Windows.Forms;
namespace ScreenCutter
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
#region 方式一判断进程法
//Process current = Process.GetCurrentProcess();
//Process[] processes = Process.GetProcessesByName(current.ProcessName);
//foreach (Process process in processes)
//{
// if (process.Id != current.Id)
// {
// if (process.MainModule.FileName== current.MainModule.FileName)
// {
// MessageBox.Show("程序已经运行!", Application.ProductName,MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
// return;
// }
// }
//}
#endregion
#region 方式二创建互斥法
//bool IsRunning;
//Mutex mutexApp = new Mutex(false, Assembly.GetExecutingAssembly().FullName, out IsRunning);
//if (!IsRunning)
//{
// MessageBox.Show("程序已经运行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
// return;
//}
#endregion
#region 方式三保证同时只有一个客户端在运行
//Mutex mutexApp = new Mutex(false, "ScreenCutter.exe");
//if (!mutexApp.WaitOne(100,false))
//{
// MessageBox.Show("程序已经运行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
// return;
//}
#endregion
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
}
}
有三种办法,,,,都可以起到作用