使程序运行唯一的一个实例常用的有两种方法: 第一种,使用MUTEX,源码如下: HANDLE g_hMutexOnly = NULL; int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { g_hMutexOnly = CreateMutex( NULL, TRUE, _T("OnceOnlyMutex") ); if( g_hMutexOnly != NULL ) { DWORD err = GetLastError(); if( err == ERROR_ALREADY_EXISTS ) { //the program is already running CloseHandle(g_hMutexOnly); return -1; } } else { return 0; } MSG msg; while( GetMessage( &msg, NULL, NULL, NULL ) ) { TranslateMessage( &msg ); DispatchMessage( &msg ); } CloseHandle(g_hMutexOnly); return 0; } 第二种方法,唯一窗口法,源代码如下: const TCHAR g_mainWndClassName[]=_T("MyWindowClass"); const TCHAR g_mainTitleName[]=_T("MyWindowTitle"); int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { HWND hwnd = FindWindowEx( NULL, NULL, g_mainWndClassName, g_mainTitleName ); if( hwnd ) return -1; //register window class //create window CreateWindow( g_mainWndClassName, g_mainTitleName ... ); ... return 0; }