1 using System;
2 using System.Runtime.InteropServices;
3
4 class Mutex
5 {
6 [DllImport("coredll.Dll")]
7 private static extern int GetLastError();
8
9 [DllImport("coredll.Dll")]
10 private static extern int ReleaseMutex(IntPtr hMutex);
11
12 [DllImport("coredll.Dll")]
13 private static extern IntPtr CreateMutex(
14 SECURITY_ATTRIBUTES lpMutexAttributes,
15 bool bInitialOwner, string lpName);
16
17 [StructLayout(LayoutKind.Sequential)]
18 public class SECURITY_ATTRIBUTES
19 {
20 public int nLength;
21 public int lpSecurityDescriptor;
22 public int bInheritHandle;
23 }
24
25 private const int ERROR_ALREADY_EXISTS = 0183;
26
27 public static void Run()
28 {
29 IntPtr hMutex = CreateMutex(null, false, "ZJS_FJ");
30 if (GetLastError() != ERROR_ALREADY_EXISTS)
31 {
32 System.Windows.Forms.Application.Run(new Form1());
33 return;
34 }
35 else
36 {
37 ReleaseMutex(hMutex);
38 return;
39 }
40 }
41 } // class
42
2 using System.Runtime.InteropServices;
3
4 class Mutex
5 {
6 [DllImport("coredll.Dll")]
7 private static extern int GetLastError();
8
9 [DllImport("coredll.Dll")]
10 private static extern int ReleaseMutex(IntPtr hMutex);
11
12 [DllImport("coredll.Dll")]
13 private static extern IntPtr CreateMutex(
14 SECURITY_ATTRIBUTES lpMutexAttributes,
15 bool bInitialOwner, string lpName);
16
17 [StructLayout(LayoutKind.Sequential)]
18 public class SECURITY_ATTRIBUTES
19 {
20 public int nLength;
21 public int lpSecurityDescriptor;
22 public int bInheritHandle;
23 }
24
25 private const int ERROR_ALREADY_EXISTS = 0183;
26
27 public static void Run()
28 {
29 IntPtr hMutex = CreateMutex(null, false, "ZJS_FJ");
30 if (GetLastError() != ERROR_ALREADY_EXISTS)
31 {
32 System.Windows.Forms.Application.Run(new Form1());
33 return;
34 }
35 else
36 {
37 ReleaseMutex(hMutex);
38 return;
39 }
40 }
41 } // class
42