互斥对象之只运行一个实例程序

 

这个例子用的是内核对象的互斥对象实现的。代码如下:

BOOL CtestApp::InitInstance()//在程序CxxApp的初始化函数中
{
	m_hMutex=CreateMutex(NULL,TRUE,"test");
	if (m_hMutex==NULL)
	{
		return FALSE;
	}
	if (GetLastError()==ERROR_ALREADY_EXISTS)
	{
		HWND hWnd=::FindWindow(NULL,"test");//找到窗口标题为test的窗口返回其句柄
		CWnd *pWnd=CWnd::FromHandle(hWnd);
		pWnd->ShowWindow(SW_SHOW);//将该窗口显示出来
		ReleaseMutex(m_hMutex);
        return FALSE;
	}//下面省略了向导生成的代码






}

当程序退出时这个互斥对象也应该销毁掉

int CtestApp::ExitInstance()
{
	ReleaseMutex(m_hMutex);
	return CWinApp::ExitInstance();
}


 

你可能感兴趣的:(null)