在WinApp InitInstance函数的第一行创建一个互斥对象。判断对象是否为空,如果不为空,则报告,程序已经运行。返回错误。
BOOL CMyProgramApp::InitInstance() //CMyProgramApp是你的WinApp类名
{
HANDLE hMutex=::CreateMutex(NULL,TRUE,"FirstName");//第三个参数FirstName这个名称可以任意取,第二个参数要为TRUE表示当前实例占用此互斥对象
if (hMutex!=NULL)
{
if (GetLastError()==ERROR_ALREADY_EXISTS)
{
AfxMessageBox("已经有一个程序运行.");
return FALSE;
}
}
//后面是原来的代码,不要改动
}
这样,当程序启动了一个以后,再启动一个,就会报告“已经有一个程序运行”。