单例程序的实现
来源:互联网 发布:it招聘信息网 编辑:程序博客网 时间:2024/06/11 09:34
一、利用信号量实现进程间
代码如下:
HANDLE hSem = CreateSemaphore(NULL, 1, 1, m_pszExeName); // 创建命名的信号量 // 信号量存在,则程序已有一个实例运行 if (GetLastError() == ERROR_ALREADY_EXISTS) { // 关闭信号量句柄 CloseHandle(hSem); // 寻找先前实例的主窗口 HWND hWndPrevious = ::GetWindow(::GetDesktopWindow(),GW_CHILD); while (::IsWindow(hWndPrevious)) { // 检查窗口是否有预设的标记 if (::GetProp(hWndPrevious, m_pszExeName)) { // 主窗口已最小化,则恢复其大小 if (::IsIconic(hWndPrevious)) { ::ShowWindow(hWndPrevious,SW_RESTORE); } // 将主窗激活 ::SetForegroundWindow(hWndPrevious); // 将主窗的对话框激活 ::SetForegroundWindow(::GetLastActivePopup(hWndPrevious)); // 退出本实例 return FALSE; } // 继续寻找下一个窗口 hWndPrevious = ::GetWindow(hWndPrevious,GW_HWNDNEXT); } // 前一实例已存在,但找不到其主窗 // 可能出错了 // 退出本实例 return FALSE; }
二、创建共享数据段实现
#pragma data_seg("MYDATA") //在此处定义变量,例如int i = 0; #pragma data_seg ()
#pragma comment(linker,"/SECTION:MYDATA,RWS") //设置改段为共享段
三、利用socket通讯实现
0 0
- 单例程序的实现
- Qt中单例程序的实现
- 单例程序
- 单例程序
- QT-单例程序
- C++实现单例模式的简单例程
- QT-单例程序 重新启动
- vc sdk 单例程序运行
- 顺序栈的实现例程
- 单链表的链式实现例程
- 链表:基本例程的实现
- 实现了Ocx的注册例程
- 单链表的顺序实现例程[动态分配存储空间]
- Maven + EclipseLink实现的简单JPA例程
- 链表的基本实现例程
- 环形缓冲区的实现原理与例程
- 宏的试例程序
- Java单例程个人思考
- 不该失去的,一块钱也不放弃
- 判断一条单链表是否有环
- The Decoder - UVa458
- Postgresql手册事务隔离级别笔记
- javascript学习笔记
- 单例程序的实现
- 为何会出现 label 不能解决的问题,求帮助
- 随想录(rtos和一般os的区别)
- 妈妈培养天才的13绝招
- 自定义控件之触摸事件的传递
- 用UIScrollView实现相册,并设置滚动条消失,改变UIPageControl的颜色,实现循环滚动相册
- SQL经典面试题目总结
- 自定义cmd颜色
- 关于java.lang.Exception: DEBUG STACK TRACE for PoolBackedDataSource.close() 异常