C#代码实现,确保windows程序只有一个实例(instance)
2007-08-20 11:38
786 查看
[align=left] ///<summary>[/align]
[align=left] ///应用程序的主入口点。[/align]
[align=left] ///</summary>[/align]
[align=left] [STAThread][/align]
[align=left] staticvoid Main() [/align]
[align=left] {[/align]
[align=left] //防止程序多次运行[/align]
[align=left] if(!OneInstance.IsFirst("GetPayInfo"))[/align]
[align=left] {[/align]
[align=left] MessageBox.Show ("警告:程序正在运行中! 请不要重复打开程序!可在右下角系统栏找到!","程序错误提示:",MessageBoxButtons.OK,MessageBoxIcon.Stop);[/align]
[align=left] return;[/align]
[align=left] }[/align]
[align=left] Application.Run(new Form1());[/align]
[align=left] }[/align]
[align=left] // ******************* 防止程序多次执行 **************************[/align]
[align=left] publicabstractclass OneInstance [/align]
[align=left] { [/align]
[align=left] ///<summary>[/align]
[align=left] ///判断程序是否正在运行 [/align]
[align=left] ///</summary>[/align]
[align=left] ///<param name="appId">程序名称</param>[/align]
[align=left] ///<returns>如果程序是第一次运行返回True,否则返回False</returns>[/align]
[align=left] publicstaticbool IsFirst(string appId) [/align]
[align=left] { [/align]
[align=left] bool ret=false; [/align]
[align=left] if(OpenMutex(0x1F0001,0,appId)==IntPtr.Zero) [/align]
[align=left] { [/align]
[align=left] CreateMutex(IntPtr.Zero,0,appId); [/align]
[align=left] ret=true; [/align]
[align=left] } [/align]
[align=left] return ret; [/align]
[align=left] } [/align]
[align=left] [DllImport("Kernel32.dll",CharSet=CharSet.Auto)] [/align]
[align=left] privatestaticextern IntPtr OpenMutex( [/align]
[align=left] uint dwDesiredAccess, // access [/align]
[align=left] int bInheritHandle, // inheritance option [/align]
[align=left] string lpName // object name [/align]
[align=left] ); [/align]
[align=left] [/align]
[align=left] [DllImport("Kernel32.dll",CharSet=CharSet.Auto)] [/align]
[align=left] privatestaticextern IntPtr CreateMutex( [/align]
[align=left] IntPtr lpMutexAttributes, // SD [/align]
[align=left] int bInitialOwner, // initial owner [/align]
[align=left] string lpName // object name [/align]
[align=left] ); [/align]
}
[align=left] ///应用程序的主入口点。[/align]
[align=left] ///</summary>[/align]
[align=left] [STAThread][/align]
[align=left] staticvoid Main() [/align]
[align=left] {[/align]
[align=left] //防止程序多次运行[/align]
[align=left] if(!OneInstance.IsFirst("GetPayInfo"))[/align]
[align=left] {[/align]
[align=left] MessageBox.Show ("警告:程序正在运行中! 请不要重复打开程序!可在右下角系统栏找到!","程序错误提示:",MessageBoxButtons.OK,MessageBoxIcon.Stop);[/align]
[align=left] return;[/align]
[align=left] }[/align]
[align=left] Application.Run(new Form1());[/align]
[align=left] }[/align]
[align=left] // ******************* 防止程序多次执行 **************************[/align]
[align=left] publicabstractclass OneInstance [/align]
[align=left] { [/align]
[align=left] ///<summary>[/align]
[align=left] ///判断程序是否正在运行 [/align]
[align=left] ///</summary>[/align]
[align=left] ///<param name="appId">程序名称</param>[/align]
[align=left] ///<returns>如果程序是第一次运行返回True,否则返回False</returns>[/align]
[align=left] publicstaticbool IsFirst(string appId) [/align]
[align=left] { [/align]
[align=left] bool ret=false; [/align]
[align=left] if(OpenMutex(0x1F0001,0,appId)==IntPtr.Zero) [/align]
[align=left] { [/align]
[align=left] CreateMutex(IntPtr.Zero,0,appId); [/align]
[align=left] ret=true; [/align]
[align=left] } [/align]
[align=left] return ret; [/align]
[align=left] } [/align]
[align=left] [DllImport("Kernel32.dll",CharSet=CharSet.Auto)] [/align]
[align=left] privatestaticextern IntPtr OpenMutex( [/align]
[align=left] uint dwDesiredAccess, // access [/align]
[align=left] int bInheritHandle, // inheritance option [/align]
[align=left] string lpName // object name [/align]
[align=left] ); [/align]
[align=left] [/align]
[align=left] [DllImport("Kernel32.dll",CharSet=CharSet.Auto)] [/align]
[align=left] privatestaticextern IntPtr CreateMutex( [/align]
[align=left] IntPtr lpMutexAttributes, // SD [/align]
[align=left] int bInitialOwner, // initial owner [/align]
[align=left] string lpName // object name [/align]
[align=left] ); [/align]
}
相关文章推荐
- C#代码实现,确保windows程序只有一个实例(instance)
- C#代码实现,确保windows程序只有一个实例(instance)
- C# 确保程序只有一个实例在运行[转]
- 确保只有一个程序实例运行(C#)之解决方案
- 确保只有一个程序实例运行(C#)之解决方案
- C#确保只有一个实例在运行的方法
- C#利用Mutex互斥量实现同时只有一个进程实例在运行
- 保证C#应用程序只有一个实例在运行
- C#实现让程序只能打开一个实例(总结3方法)
- 用两个栈实现一个队列的功能 && 两个队列实现一个栈的功能 && 代码实例
- C#实现GridView导出Excel实例代码
- Erlang实现的一个Web服务器代码实例
- C#实现的json序列化和反序列化代码实例
- 用C#让应用程序只有一个实例在运行
- python实现单例模式,从始至终都只有一个实例
- 使用C#实现在屏幕上画图效果的代码实例
- 一个简单的AJAX实现,基于C#的ASP.Net,包括服务器端的程序代码
- asp.net C#如何实现当地时区转换的代码实例
- C#一个简单的定时小程序实现代码
- C#应用程序只运行一个实例的代码