内核对象是所有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 = CreateMutex(NULL, TRUE, "SingleInstance");
- if (hInstance)
- {
- if (ERROR_ALREADY_EXISTS == GetLastError())
- {
- printf("程序已经启动!");
- system("pause");
- return;
- }
- }
- while (true)
- {
- printf("程序运行阿 = = 运行阿 = = 运行阿。。/n");
- Sleep(100);
- }
- CloseHandle(hInstance);
- return;
- }
本文介绍了一种使用Windows内核对象中的互斥信号量来确保应用程序仅以单实例方式运行的方法。这种方法通过创建一个名为'SingleInstance'的互斥对象来防止程序被多次启动。
2901

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



