内核对象是所有Windows进程都可以访问的,因此可以使用其中的互斥信号量和事件对象使程序单实例运行。。
比起原来的IO锁好了很多 = = DEMO如下:
【使用事件对象(事件信号量)实现】
- //////////////////////////////////////////////////////////////////////////
- // CopyRight(c) 2009, YOYO, All Rights Reserved.
- // Author: LIN YiQian
- // Created: 2009/09/16
- // Describe: 使用事件对象控制单实例程序 演示
- //////////////////////////////////////////////////////////////////////////
- #include <Windows.h>
- #include <iostream>
- using namespace std;
- void main(void)
- {
- HANDLE hInstance = CreateEvent(NULL, FALSE, TRUE, "SingleInstance");
- if (hInstance)
- {
- if (ERROR_ALREADY_EXISTS == GetLastError())
- {
- printf("程序已经在运行!");
- system("pause");
- return;
- }
- }
- while (true)
- {
- printf("程序正在运行中。。运行中。。运行中。。= =/n");
- Sleep(100);
- }
- CloseHandle(hInstance);
- return;
- }
本文介绍了一种使用Windows内核对象中的事件对象来确保程序仅运行一个实例的方法。通过创建一个全局唯一的事件对象,并检查其创建状态,可以有效地避免程序重复启动。

被折叠的 条评论
为什么被折叠?



