在读OBS源码时看到一个比较有意思的关于防止用户多开程序的写法,简单有效,记录下

    //make sure only one instance of the application can be open at a time
#define OBS_WINDOW_CLASS         TEXT("OBSWindowClass")
HANDLE hOBSMutex = CreateMutex(NULL, TRUE, TEXT("OBSMutex"));
if(GetLastError() == ERROR_ALREADY_EXISTS)// 如果已有互斥量存在 这里GetLastError则是CreateMutex的Error
{
hwndMain = FindWindow(OBS_WINDOW_CLASS, NULL);//获取该窗体句柄
if(hwndMain)
SetForegroundWindow(hwndMain);//设置焦点到程序窗口 CloseHandle(hOBSMutex);//互斥量存在释放句柄并复位互斥量
return ;
}

这里他CreateMutex创建一个互斥体,当第一次执行程序时创建成功,第二次执行程序时则CreateMutex会失败,此时设置程序焦点到已经开启的程序。    end

c++防止客户端多开巧妙代码的更多相关文章

  1. 根据wsdl,apache cxf的wsdl2java工具生成客户端、服务端代码

    根据wsdl,apache cxf的wsdl2java工具生成客户端.服务端代码 apache cxf的wsdl2java工具的简单使用: 使用步骤如下: 一.下载apache cxf的包,如apac ...

  2. Socket通信客户端和服务端代码

    这两天研究了下Socket通信,简单实现的客户端和服务端代码 先上winfrom图片,客户端和服务端一样 服务端代码: using System; using System.Collections.G ...

  3. ArcEngine判断要素(feature)是否为multipart feature及分解(炸开)代码

    转自原文 ArcEngine判断要素(feature)是否为multipart feature及分解(炸开)代码 #region 校验合法性 ArrayList pFeatureArray = nul ...

  4. 基于UDP的客户端和服务器端的代码设计

    实验平台 linux 实验内容 编写UDP服务器和客户端程序,客户端发送消息,服务器接收消息,并打印客户端的IP地址和端口号. 实验原理 UDP是无需连接的通信,其主要实现过程如下: 同样,我们可以按 ...

  5. Java 断点下载(下载续传)服务端及客户端(Android)代码

    原文: Java 断点下载(下载续传)服务端及客户端(Android)代码 - Stars-One的杂货小窝 最近在研究断点下载(下载续传)的功能,此功能需要服务端和客户端进行对接编写,本篇也是记录一 ...

  6. 用JDK自带的工具生成客户端调用Webservice的代码

    JAVA下客户端调用Webservice代码简直是让人心生畏惧,今日尝试,做记录如下,参考网上的众多解决方案,下面这种方式是比较简单的. 在jdk的bin目录下有一个wsimport.exe的工具,使 ...

  7. 使用JAVA客户端对HDFS进行代码编写(五)

    在linux中,在JAVA中编程,耗时的不是代码的编写而是环境的搭建,版本的选择...日了苍天,昨天eclipse突然抽风在linux运行不起来,耗了几个小时,试了各种办法...现在windows环境 ...

  8. 如何测试你给客户端app开的接口

    这里介绍一款工具用于测试后台给客户端开的接口. 采用http或者https 采用表单或者json格式 这款工具之前是谷歌浏览器的一款插件,后来出现了各个平台的客户端.非常实用. 名叫postman 官 ...

  9. [JAVA] Tcp客户端和服务器简单代码

    服务器: import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; im ...

随机推荐

  1. nodejs review-03

    39 Serve different file types with our server 处理文件类型 function content_type(filename) { var ext = pat ...

  2. DataSet、DataTable、Json、List 等各种数据的相互转化

      1.根据Dataset生成json格式的字符串,不管Dataset里面有多少个表都可以一一生成对应的json字符串,并一次性返回 private string dsToJson(DataSet d ...

  3. node.js安装

    Node.js是一个基于Chrome JavaScript运行时建立的一个平台,用来方便地搭建快速的,易于扩展的网络应用Node.js借助事件驱动,非阻塞I/O模型变得轻量和高效,非常适合run ac ...

  4. MD5 、 加密工具

    package com.cgcyiliao.server.util; import java.security.MessageDigest; import java.security.NoSuchAl ...

  5. BZOJ3752 : Hack

    折半爆搜,首先爆搜出所有长度不超过$4$的串. 对于每个询问,首先暴力枚举所有长度不超过$4$的串,以及前$4$位相同时后面的串. 然后枚举前$4$位,以及后面的串长,那么后面的hash值唯一,可以双 ...

  6. JDBC总结

    今天复习了JDBC的内容,古人说温故知新,真的深有体会了.所以决定用自已的话在此记下,如有不对之处,请高手指教. JDBC连接数据库,采用的是面向接口编程.接口在java.sql和javax.sql包 ...

  7. 【Telerik】<telerik:RadGridView/>控件的使用

    学习Telerik第三方控件中的WPF时,对于RadGridView控件做的一些记录. AutoGenerateColumns:启动时是否生成列 ShowGroupPanel:是否显示表格的分组名称 ...

  8. linux 关于session缓存丢失,自己掉坑里面了

    突然间session失效了,死活打不上缓存.顺着解决思路:程序--再检查程序--文件权限--查看服务器配置 我只想说一句,我操.尼玛,各种调试,各种自虐.毫无意义,三个钟头流失. 看看几点了,快凌晨两 ...

  9. Apache配置过程

    要在一台主机上搭建多个网站,最简单的办法就是给不同的网站分配不一样的端口.下面我以Ubuntu 14.04 + Apache 2.4.7为例说一下在搭建过程中的一些注意事项. 1. 主配置文件是/et ...

  10. 移动web 公用样式

    /*! normalize.css v3.0.2 | MIT License | github.com/necolas/normalize */ /** * 1. Set default font f ...