wince程序防止创建多个实例实现互斥作用_C 语言

流程:
1、在程序初始化的时候创建互斥量
2、检测互斥量返回的错误代码,看是否已存在这个互斥量
3、若已存在相同的互斥量,则释放创建的互斥句柄,并复位互斥量,然后,退出该程序

具体代码如下:

复制代码 代码如下:

//创建互斥量
HANDLE m_hMutex = CreateMutex(NULL, FALSE, _T("D3GPhoneDlg"));
// 检查错误代码
if (GetLastError() == ERROR_ALREADY_EXISTS){
// 如果已有互斥量存在则释放句柄并复位互斥量
CloseHandle(m_hMutex);
m_hMutex = NULL;
::PostMessageW(HWND_BROADCAST, WM_D3GPHONEDLG_MSG, 1, 2);// 通知已打开的程序,激活窗口
// 程序退出
CDialog::OnCancel();
}
// *** 【EOF】防止程序创建多个实例 ***

这段代码在wince 的MFC程序中测试通过,放到程序的OnInitDialog()函数中。

大家在测试的时候,可以先把激活窗口的那句注释掉

时间: 2024-10-30 03:09:26

wince程序防止创建多个实例实现互斥作用_C 语言的相关文章

linux c程序中获取shell脚本输出的实现方法_C 语言

1. 前言Unix界有一句名言:"一行shell脚本胜过万行C程序",虽然这句话有些夸张,但不可否认的是,借助脚本确实能够极大的简化一些编程工作.比如实现一个ping程序来测试网络的连通性,实现ping函数需要写上200~300行代码,为什么不能直接调用系统的ping命令呢?通常在程序中通过 system函数来调用shell命令.但是,system函数仅返回命令是否执行成功,而我们可能需要获得shell命令在控制台上输出的结果.例如,执行外部命令ping后,如果执行失败,我们希望得到p

MFC创建右键弹出菜单的方法_C 语言

本文实例讲述了MFC创建右键弹出菜单的方法.分享给大家供大家参考.具体实现方法如下: ①.添加一个菜单资源,ID为IDM_RIGHTMENU.因为在显示右键菜单时顶级菜单是不显示的,所以可以给它设置任意文本. ②.给视类添加WM_RBUTTONDOWN消息,在该消息中处理右键弹出菜单.因为视类窗口始终覆盖在框架窗口之上,框架窗口接收不到鼠标消息,所以由视类捕获WM_RBUTTONDOWN消息. 复制代码 代码如下: void CMenuView::OnRButtonDown(UINT nFlag

VC程序在Win32环境下动态链接库(DLL)编程原理_C 语言

本文详细讲述了VC程序在Win32环境下动态链接库(DLL)编程原理.分享给大家供大家参考.具体分析如下: 一般比较大的应用程序都由很多模块组成,这些模块分别完成相对独立的功能,它们彼此协作来完成整个软件系统的工作.其中可能存在一些模块的功能较为通用,在构造其它软件系统时仍会被使用.在构造软件系统时,如果将所有模块的源代码都静态编译到整个应用程序EXE文件中,会产生一些问题:一个缺点是增加了应用程序的大小,它会占用更多的磁盘空间,程序运行时也会消耗较大的内存空间,造成系统资源的浪费:另一个缺点是

举例讲解C语言程序中对二叉树数据结构的各种遍历方式_C 语言

二叉树遍历的基本思想 二叉树的遍历本质上其实就是入栈出栈的问题,递归算法简单且容易理解,但是效率始终是个问题.非递归算法可以清楚的知道每步实现的细节,但是乍一看不想递归算法那么好理解,各有各的好处吧.接下来根据下图讲讲树的遍历. 1.先序遍历:先序遍历是先输出根节点,再输出左子树,最后输出右子树.上图的先序遍历结果就是:ABCDEF  2.中序遍历:中序遍历是先输出左子树,再输出根节点,最后输出右子树.上图的中序遍历结果就是:CBDAEF 3.后序遍历:后序遍历是先输出左子树,再输出右子树,最后

C++ 动态创建按钮及 按钮的消息响应_C 语言

动态创建的按钮 都会在消息 OnCommand 中得到处理,无论是什么消息,都会处理的 1\创建按钮 复制代码 代码如下: CButton* btn = new CButton();     btn->Create(_T("方法"), WS_CHILD | WS_VISIBLE, CRect(0,0,50,50), this, 2); 注意创建的最后一个参数 这个数据代表的就是创建的那个控件的ID值,相当于 这个数据是代表控件的唯一的重要标志 BOOL CMyCusCrl::On

优秀程序员必须知道的20个位运算技巧_C 语言

一提起位运算,人们往往想到它的高效性,无论是嵌入式编程还是优化系统的核心代码,适当的运用位运算总是一种迷人的手段,或者当您求职的时候,在代码中写入适当的位运算也会让您的程序增加一丝亮点,最初当我读<编程之美>求"1的数目"时,我才开始觉得位运算是如此之美,后来读到 <Hacker's Delight>,感慨到Henry S.Warren把位运算运用的如此神出鬼没,很多程序都十分精妙,我觉得在一个普通的程序中大量运用这样的代码的人简直是疯了!但掌握简单的位运算技巧

深入解析C++程序中激发事件和COM中的事件处理_C 语言

本机 C++ 中的事件处理在处理本机 C ++ 事件时,您分别使用 event_source 和 event_receiver 特性设置事件源和事件接收器,并指定 type=native.这些特性允许应用它们的类在本机的非 COM 上下文中激发和处理事件. 声明事件 在事件源类中,对一个方法声明使用 __event关键字可将该方法声明为事件.请确保声明该方法,但不要定义它:这样做会产生编译器错误,因为将该方法转换为事件时编译器会隐式定义它.本机事件可以是带有零个或多个参数的方法.返回类型可以是

阿里云如何创建 Windows 系统实例

  步骤 2:创建 Windows 系统实例 这里只介绍新购实例.如果您有镜像,可以使用自定义镜像创建实例. 新购实例操作步骤: 登录 云服务器管理控制台. 输入账号登录.如果尚未注册,单击 免费注册 . 定位到 云服务器ECS > 实例 .单击 创建实例 . 选择付费方式:包年包月 或 按量付费 .关于两种付费方式的区别,请参见 计费模式. 如果选择 按量付费 ,请确保账户余额至少有 100元 .如无余额,请进入 充值页面 充值后再开通. 选择地域.有时候也被称为"节点",是指

asp.net StreamReader 创建文件的实例代码

这篇文章介绍了asp.net StreamReader 创建文件的实例代码,有需要的朋友可以参考一下   复制代码 代码如下: using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using