要实现程序单实例运行并打开前一个实例有许多方法,如大多数网上的Process 方法。但,如果程序从IDE(像vs)运行,然后再双击bin/debug里的程序,运行了2个实例了。本人用的是Mutex来控制程序单实例运行,API操作前实例的窗体句柄来实现的。.Net里有Form的Handle属性来获取窗体句柄。
本人在vs2008中写的,效果:可行;最大最小化时双击会变为普通状态。
如有更好的方法,请大家拿出来研究。代码如下:
创建程序设置:
名称:w 类型:Int64 范围:用户 值:0
在Program.cs里:
using System.Threading;
using System.Runtime.InteropServices;
using System.Diagnostics;
using System.Reflection;
using WindowsFormsApplication1.Properties; //加入项目设置
static class Program
{
#region Win32 API 函数
//该函数设置由不同线程产生的窗口的显示状态;
//如果函数原来可见,返回值为非零;如果函数原来被隐藏,返回值为零。