程序的唯一性
来源:互联网 发布:windows server 功能 编辑:程序博客网 时间:2024/04/29 10:15
试过各种方法,下面这个相对比较好
在Program.cs中,添加如下,红色字部分要改掉
usingSystem.Diagnostics; //添加
namespace ProgramUnique
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Process p = Form1.GetRunningInstance();
if (p != null) //已经有应用程序副本执行
{
// MessageBox.Show("程序已经运行!");
Form1.HandleRunningInstance();
}
else //启动第一个应用程序
{
RunApplication();
}
}
static void RunApplication()
{
Application.EnableVisualStyles();
Application.Run(new Form1());
}
}
}
在Form1.cs中添加这个region即可
#region 程序唯一性
private const int WS_SHOWNORMAL = 1;
[DllImport("User32.dll")]
private static extern bool ShowWindowAsync(IntPtr hWnd,int cmdShow);
[DllImport("User32.dll")]
private static extern bool SetForegroundWindow(IntPtrhWnd);
public static Process GetRunningInstance()
{
Process currentProcess =Process.GetCurrentProcess();//获取当前进程
//获取当前运行程序完全限定名
stringcurrentFileName = currentProcess.MainModule.FileName;
//获取进程名为ProcessName的Process数组。
Process[] processes =Process.GetProcessesByName(currentProcess.ProcessName);
//遍历有相同进程名称正在运行的进程
foreach(Process process in processes)
{
if(process.MainModule.FileName == currentFileName)
{
if (process.Id!= currentProcess.Id)//根据进程ID排除当前进程
return process;//返回已运行的进程实例
}
}
return null;
}
public static bool HandleRunningInstance(Process instance)
{
//确保窗口没有被最小化或最大化
ShowWindowAsync(instance.MainWindowHandle,WS_SHOWNORMAL);
//设置真实例程为foreground window
returnSetForegroundWindow(instance.MainWindowHandle);
}
public static bool HandleRunningInstance()
{
Process p = GetRunningInstance();
if (p != null)
{
HandleRunningInstance(p);
return true;
}
return false;
}
#endregion
- 程序的唯一性
- 程序以及窗体运行的唯一性汇总
- 程序以及窗体运行的唯一性汇总
- 应用程序的唯一性
- C程序中唯一序列号的生成
- C语言中唯一的构造程序
- 设置用户名的唯一性
- UUID的唯一性问题
- OID,唯一性的标志
- TreSet的有序唯一性
- 用户唯一性的校验
- 索引名称的唯一性
- 唯一性标识的矛盾
- 唯一性索引的意义
- 保证文件名的唯一性
- 唯一性约束和唯一性索引的区别
- 唯一性约束和唯一性索引的区别
- 唯一性约束和唯一性索引的区别
- Laravel 架构中的 Container/ServiceProvider/Facade
- 象岛中文离线地图App上线
- Java实现-------网络蜘蛛
- 凯云水利水电工程造价管理系统 技术解析(六) 机械单价(一)
- Java NIO系列教程(二) Channel
- 程序的唯一性
- 马尔代夫中文离线地图App上线
- 局域网基础
- ECharts初识与Echarts-java类库应用
- java基础——内部类
- (四)Linux环境部署(Centos+Nginx+Tomcat+Mysql) - 安装Tomcat和JDK 以及 Nginx与Tomcat整合
- 快排的随机化算法
- hdoj 1247 Hat’s Words 【字典树】【输出字符串集里面 可以由任意两个字符串所构成的字符串】
- 恶心的 csdn,