WINCE程序单实例运行
来源:互联网 发布:咩萝捏脸数据 编辑:程序博客网 时间:2024/06/08 18:02
Wince下开发应用程序时很多情况下需要让程序只能有一个实例运行,实现方法主要是在程序入口点检查当前实例是否正在运行,如实例已运行,则退出本次执行。总结了一下,主要有以下三种方式:
1.通过FindWindow查找指定窗口是否存在,参考代码如下:
此种方式只限于有窗口的程序,对于无窗口程序或者指定窗口还未创建但实例已经存在的程序就无效了。一个更好的方法是通过内核对象---定义一个互斥体来实现。
2.通过定义一个互斥体来确保只有一个实例运行,参考代码如下:
3.全局原子方法,在程序入口点检查指定原子是否存在,若存在则退出程序,若不存在,则在系统原子表中添加原子,用以记录当前实例正在运行,并在程序退出之前删除改原子,表示该实例已退出。参考代码如下
记得在程序退出时将原子删除
采用全局原子的方法相当于是在系统原子表中记录了程序运行的两种状态:运行状态和非运行状态。新实例在启动时通过查找原子的存在与否来判断程序处于何种状态,但需要注意一点的是:有些程序在退出的时候由于需要卸载组件释放资源,但这个过程可能需要一定的时间。如果这个时候运行程序的另一个实例,由于之前程序还在运行,根据单实例原则这个新实例会立即退出,而之前实例在资源卸载完后也会立即退出。这样就会造成两个程序都退出了。所以对于这样的程序,就需要记录另外一种状态:退出状态,这样新的实例在启动时能够知道当前实例是否正在退出,若正在退出,则继续运行当前实例。
所以可以在原子表中另外定义一个原子来表示程序处在退出状态。在窗口WM_DESTROY消息处理中添加以下代码:
在程序入口时候判断是否有实例运行,有则继续判断实例是否正在退出,从而对三种状态分别做不同处理。参考代码如下:
- WINCE程序单实例运行
- 单实例运行程序
- 程序单实例运行
- WinCE下应用程序的单实例运行
- WinCE下应用程序的单实例运行
- 单实例运行程序和SetEventData在非WinCE平台下的实现
- 单实例运行程序和SetEventData在非WinCE平台下的实现
- 使程序单实例运行
- 保证程序单实例运行
- c++程序单实例运行
- c++程序单实例运行
- C# Mutex实现程序单实例运行
- WINCE中只允许程序运行一个实例
- WINCE中只允许程序运行一个实例
- WINCE中只允许程序运行一个实例
- WINCE中只允许程序运行一个实例
- win32 单实例程序运行-无窗口程序也可
- 使用Mutex实现程序单实例运行(c#)
- WPF Development: Frequently Used Types
- ASP.NET性能提升秘诀之管道与进程优化
- 要在技术和学术上有所成就,现在很多青年人最需要解决的其实不是知识问题,而是心理上的问题,是对“成功”定义的理解。
- 如何验证页面上某个元素值是否正确?
- C# Language
- WINCE程序单实例运行
- 比较好的一个数据库连接文件conn.asp
- Via OpenCore decoding H.264 ES stream(RTP) from net
- 64位CentOS 5.5安装Mysql Proxy 0.8.1
- 【转载】如何用VB6在中文系统下把Unicode编码的日文字符转成Shift-JIS编码
- div嵌套li时,div自动高度,神奇的overflow:hidden;
- C++ 优秀书籍
- 哪些初始化参数最影响Oracle系统性能
- 一个最简单GAL游戏资源文件黑盒分析(一)