防止一个没有窗体的WINDOWS程式的重复运行

2008-02-23 05:37:12来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

用互斥(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)。




标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: 如何获取屏幕保护程式的密码

下一篇: 建立磁性窗体

热门词条
热门标签