通常我们编写了一个程序,如果不加任何限制,用户可以多次运行这个程序,那么在系统中可以产生多个同名的进程。如果要想使系统中只能有一个这样的进程存在,用户运行第二次就不能启动程序,那么就需要在程序启动开始时中首先调用如下函数:
- BOOL CheckMutex()
- {
- SetLastError(0);
- BOOL bResult = TRUE;
- g_hMutex = CreateMutex( NULL, FALSE, NAME_APPLICATION );
- if( GetLastError() == ERROR_ALREADY_EXISTS )
- {
- bResult = FALSE;
- CloseHandle( g_hMutex );
- }
- return bResult;
- }
这样如果程序被第二次执行,CreateMutex就不能在创建名为NAME_APPLICATION 的互斥量,从而达到同名进程只能启动一次的目的,实现了同名进程互斥的效果。最后别忘了在程序结束时,ReleaseMutex(g_hMutex)。