防备一个没有窗体的WINDOWS措施的反复运行
用互斥(Mutex),Mutex原来是多线程同步用的,防备多个线程会见同一资源而激发斗嘴。用CreateMutex可以建设Mutex工具,实质上是一个kernel工具。
在任何Win32措施(包罗GDI和Console)的启动部门加上以下代码(Console措施的main函数、MFC措施的CWinApp派生类的InitInstance成员函数、RawSDK措施的WinMain 函数):
hMutex=CreateMutex(
NULL,//nosecurityattributes
FALSE,//initiallynotowned
"RunOnlyOneInstance");//定名Mutex是全局工具
//在所有的process都可以会见到
if(hMutex==NULL||ERROR_ALREADY_EXISTS==::GetLastError())
{
//措施第二次或今后运行时,会获得Mutex已经建设的错误
returnFALSE;
}
嘿嘿,是不是不消FindWindow优雅简捷多了?
别的,假如要限定措施同时可运行n个实例怎么办?
Tips:用信号量(Semaphore)。