1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
| Using System; Using System.Drawing; Using System.Collections; Using System.ComponentModel; Using System.Windows.Forms; Using System.Data; Using System.Threading; Using System.Runtime.InteropServices;
Namespace Example104_使程序只能够运行一个 { Public Class Form1 : System.Windows.Forms.Form { Private System.ComponentModel.Container components = null;
Public Form1() { InitializeComponent();
}
Protected override void Dispose(bool disposing) { If(disposing) { If(components! = null) { components.Dispose(); } } base.Dispose(disposing); }
#region Windows Form Designer generated code Private void InitializeComponent() { this.AutoScaleBaseSize = New System.Drawing.Size(6, 14); this.ClientSize = New System.Drawing.Size(272, 189); this.Name = "Form1"; this.Text = "Form1";
} #endregion
[StructLayout(LayoutKind.Sequential)] Public Class SECURITY_ATTRIBUTES { Public int nLength; Public int lpSecurityDescriptor; Public int bInheritHandle; }
[System.Runtime.InteropServices.DllImport("kernel32")] Private Static extern int GetLastError(); [System.Runtime.InteropServices.DllImport("kernel32")] Private Static extern IntPtr CreateMutex(SECURITY_ATTRIBUTES lpMutexAttributes, bool bInitialOwner, String lpName); [System.Runtime.InteropServices.DllImport("kernel32")] Private Static extern int ReleaseMutex(IntPtr hMutex); Const int ERROR_ALREADY_EXISTS = 0183;
[STAThread] Static void Main() { IntPtr hMutex; hMutex = CreateMutex(null, false, "test"); If(GetLastError() != ERROR_ALREADY_EXISTS) { Application.Run(New Form1()); } Else { MessageBox.Show("本程序只允许同时运行一个"); ReleaseMutex(hMutex); } } } }
|