控制程序的启动数量(限制游戏多开)
来源:互联网 发布:e8票据打印软件注册码 编辑:程序博客网 时间:2024/05/17 04:23
引言:
在PC端使用软件的过程中,有时开发者会有类似限制程序启动数量的需求,如限制某程序在单一PC端的启动数量,或是为了统计PC端启动的程序数量等,显然需要一种“计数器”来统计程序的运行数量。
如何对多个程序进行计数
在PC端使用软件的过程中,有时开发者会有类似限制程序启动数量的需求,如限制某程序在单一PC端的启动数量,或是为了统计PC端启动的程序数量等,显然需要一种“计数器”来统计程序的运行数量。
如何对多个程序进行计数
在启动多个程序时,由于程序隶属于不同的进程,常规的计数方法不能使用,那么如何统计程序的启动的数量成为了难题。
下面介绍一种常用的方法——使用互斥量:
运行结果
至于启动数量的限制,写在代码中显然不是一种优雅的做法,更通用的做法是通过启动程序的命令行参数传入程序,当限制程序数量需要改变时,仅修改命令行即可达到要求,无需改动代码。
#include "stdafx.h"#include "windows.h"#include <iostream>using namespace std;class MaxClientLimitInstance{public:static bool Lock(int MaxInstanceCount){int ret = 0;for(int i = 0; i < MaxInstanceCount; ++i){HANDLE h = ::CreateMutex(0, 1, L"test program");if (GetLastError() == 0){m_Handle = h;break;}else{CloseHandle(h);ret++;}}return ret < MaxInstanceCount;}static void UnLock(){if (m_Handle != NULL){ReleaseMutex(m_Handle);CloseHandle(m_Handle);}}static HANDLE m_Handle;};HANDLE MaxClientLimitInstance::m_Handle = 0;int _tmain(int argc, _TCHAR* argv[]){int MaxNumber = 1;if (!MaxClientLimitInstance::Lock(MaxNumber)){cout << "You have already run a program! This program will be closed." << endl;system("pause");return 0;}else{cout << "Run program success! " << endl;}system("pause");//< 等待用户输入,在游戏程序中可以对应理解为在游戏主循环中执行逻辑MaxClientLimitInstance::UnLock();//< 注意,要在“等待用户输入"之后ReleaseMutex,否则互斥量被释放,无法达到预期return 0;}
运行结果
至于启动数量的限制,写在代码中显然不是一种优雅的做法,更通用的做法是通过启动程序的命令行参数传入程序,当限制程序数量需要改变时,仅修改命令行即可达到要求,无需改动代码。
1 1
- 控制程序的启动数量(限制游戏多开)
- 网页游戏的多开 COOKIE限制
- 限制CheckBoxList选中的数量
- 限制perl多进程数量
- 限制类对象生成的数量(一)
- 限制类对象生成的数量(二)
- 限制类对象生成的数量(三)
- T3D游戏控制程序
- 游戏是如何限制多开的,如何解决
- cookie的大小的数量限制
- 限制同一ip的注册数量
- 限制TextArea区的文字输入数量
- 限制textarea内的字符数量
- 如何限制安装Java应用的数量
- td 显示字体的数量限制
- 有物品数量限制的背包问题
- 关于Android方法数量限制的问题
- CSS/JS 限制显示字符的数量
- HDU 1085 Holding Bin-Laden Captive!
- 浅析人脸检测之Haar分类器方法
- Python通过正则表达式获取,去除(过滤)或者替换HTML标签的几种方法(本文由169it.com搜集整理)
- use bt to distribute file or software
- 【MongoDB】在windows平台下mongodb的分片集群(六)
- 控制程序的启动数量(限制游戏多开)
- 乘方pow()的使用
- python 链表
- Caffe代码导读(2):LMDB简介
- 【leetcode 先序遍历】Binary Tree Preorder Traversal
- POJ 3690 Constellations hash
- WAV音频的播放(带窗口)
- HDU 2476 String painter 区间dp
- 怎样使网站文章快速收录