在应用程序类的InitInstance函数中加入以下代码:
HANDle hMutex = ::CreateMutex(NULL,NULL,m_pszAppName);
if(GetLastError() == ERROR_ALREADY_EXISTS)//判断CreateMutex()的错误信息
{
MessageBox(NULL,_T("程序已经启动了"),_T("提示"), MB_ICONINFORMATION);
CloseHandle(hMutex);
return FALSE;
}
这段的意义是CreateMutex函数创建了一个在系统全局内的互斥对象,第3个参数是CWinApp类的成员变量,代表当前进程的名字,当有程序试图创建一个重名的对象时,CreateMutex返回一个空值,并且用GetLastError函数会返回ERROR_ALREADY_EXISTS,利用这个返回值,可以判断程序是否真正运行。