作者:qq590240
1.利用互斥句柄
AppName = "test";
HANDLE m_hMutex = CreateMutex(NULL, FALSE, AppName);
// 检查错误代码
if (GetLastError() == ERROR_ALREADY_EXISTS)
{
// 如果已有互斥量存在则释放句柄并复位互斥量
CloseHandle(m_hMutex);
m_hMutex = NULL;
// 程序退出
return FALSE;
}
2.利用FindWindow()
BOOL IsRun (LPSTR szClassName=NULL, LPSTR szCaption=NULL)
{
HWND Hwnd;
Hwnd = FindWindow (szClassName,szCaption); //通过类名和程序标题查找
if ((int)Hwnd > 0)
//如找到则(int)Hwnd > 0.这是以前写的比较傻.可以写成if(Hwnd).如果没发现程序就会返回NULL
{
ShowWindow (Hwnd,SW_RESTORE); //将程序Restore
SetForegroundWindow (Hwnd); //将程序提到最前
return TRUE;
}
return FALSE;
}
评论