防止/实现多开的原理:
程序在编程中通常使用互斥API函数如CreatMutexA防止多开。你运行程序,程序会在调用进程时检测程序是否已经运行,如果已经运行,则不再调用,返回到已经运行的程序界面,否则启动程序。
实现多开就是把其检测的返回值始终设置为程序未运行状态。
自己制作的话,需要懂得汇编和解密,非三言两语可说清楚。
你的意思是不是这样,假如A和B已经建立聊天窗口,然后不让再让A建立同样的另外一个窗口?
如果是的话,我想你可以这样,用一个List来保存已经创建的窗口,将创建人的IP放到服务器端,或者直接放到主程序中(保持存在性),每次创建新窗口的时候呢,去遍历一下,看看有没有相同的IP。当然,这种遍历效率比较低,人少的话还可以,人多了,那就惨了所以,你可以这样优化一下,按照不同的段,创建不同的索引方式,按索引查找,这样,效率会提高很多,但是系统开销就不少了,呵呵比如AList中保存0-50,BList中保存51-100
希望帮到你
百度搜索下载沙盘,并安装
在沙盘所在文件夹中运行沙盘启动文件“quicklaunchexe”启动沙盘
在右下角的沙盘图标,点击右键,在d出菜单中,选择显示窗口,则可开启沙盘主窗口,默认只有一个沙盘“DefaultBox"。每一个沙盘代表着一个隔离空间,每一个隔离空间至少可以多开一个程序。
如需创建更多的沙盘,选择上边的菜单栏的 “沙盘”,在下拉菜单中,选择创建新沙盘,输入沙盘名字,点击确定就可以,如下图,沙盘111就是新建沙盘
多开游戏或软件时,只需单击选中沙盘,右键,选择“在沙盘中运行“,d出菜单中选择”运行任意程序“
点击后,d出文件路径对话框,根据对话框提示,选择”浏览“找到要运行的程序路径,点击确定,即可运行相应程序。
每一个沙盘都可以独立启动相应的软件。假设某游戏设定电脑上只能双开该游戏客户端,则用户在使用电脑正常开启2个客户端同时,还可以启动1个沙盘再开2个客户端,如果需要继续多开,用户需要在沙盘软件中创建新的沙盘来开启更多的客户端。
---判断窗口标题
版本 2支持库 eAPI
子程序 __启动窗口_创建完毕
局部变量 i, 整数型
局部变量 wins, 文本型, , "0"
wins = 取所有窗口列表 ()
计次循环首 (取数组成员数 (wins), )
i = i + 1
如果 (取窗口标题 (到数值 (wins [i])) = 取窗口标题 (取窗口句柄 ()))
结束 ()
否则
如果结束
计次循环尾 ()
' 记住窗口一定要有标题!
---判断进程
版本 2支持库 eAPI
子程序 __启动窗口_创建完毕
局部变量 进程列表, 进程信息, , "0"
局部变量 临时名称, 文本型
局部变量 第一位置, 整数型
局部变量 第二位置, 整数型
局部变量 临时文本, 文本型
局部变量 成员, 整数型
进程列表 = 取系统进程列表 ()
临时名称 = 取执行文件名 ()
计次循环首 (取数组成员数 (进程列表), 成员)
临时文本 = 临时文本 + 进程列表 [成员]进程名称
计次循环尾 ()
第一位置 = 寻找文本 (临时文本, 临时名称, , 真)
第二位置 = 寻找文本 (临时文本, 临时名称, 第一位置 + 2, 真)
如果真 (第二位置 > 第一位置)
信息框 (“该程序正在运行中” + #换行符 + “请不要重复运行”, #警告图标, “提示信息”)
结束 ()
using SystemDiagnostics;放在load事件里foreach (Process pro in ProcessGetProcesses())
{
if (proProcessNameToUpper() == "程序EXE")//找到任务管理器里的程序名
{
MessageBoxShow("程序的实例已经在运行!","提示",MessageBoxButtonsOK,MessageBoxIconInformation);
return;
}
}
以上就是关于“程序多开器”的原理全部的内容,包括:“程序多开器”的原理、java防止窗口多开、如何解决软件多开的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)