C#代碼實現,確保windows程式只有一個執行個體(instance)
來源:互聯網
上載者:User
///<summary> ///應用程式的主進入點。 ///</summary> [STAThread] staticvoid Main() { //防止程式多次運行 if(!OneInstance.IsFirst("GetPayInfo")) { MessageBox.Show ("警告:程式正在運行中! 請不要重複開啟程式!可在右下角系統欄找到!","程式錯誤提示:",MessageBoxButtons.OK,MessageBoxIcon.Stop); return; } Application.Run(new Form1()); } // ******************* 防止程式多次執行 ************************** publicabstractclass OneInstance { ///<summary> ///判斷程式是否正在運行 ///</summary> ///<param name="appId">程式名稱</param> ///<returns>如果程式是第一次運行返回True,否則返回False</returns> publicstaticbool 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)] privatestaticextern IntPtr OpenMutex( uint dwDesiredAccess, // access int bInheritHandle, // inheritance option string lpName // object name ); [DllImport("Kernel32.dll",CharSet=CharSet.Auto)] privatestaticextern IntPtr CreateMutex( IntPtr lpMutexAttributes, // SD int bInitialOwner, // initial owner string lpName // object name ); }