日期:2014-05-20  浏览次数:20858 次

这段代码为什么在VS 2003运行正常,在VS 2005运行出错的?
private   void   Form1_Load(object   sender,   EventArgs   e)
                {
                        IntPtr   hMutex;
hMutex=CreateMutex(null,false, "test ");
if   (GetLastError()!=ERROR_ALREADY_EXISTS)
{
Application.Run(new   Form1());
}
else
{
MessageBox.Show( "本程序只允许同时运行一个 ");
ReleaseMutex(hMutex);
}
                }

[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;

------解决方案--------------------
up