Project1

标题: 有没有人见过自动关闭重复打开窗口的脚本 [打印本页]

作者: hy2000    时间: 2020-8-18 11:21
标题: 有没有人见过自动关闭重复打开窗口的脚本
如题,最近在加一些简单的提高体验感的辅助内容,我记得之前在某款游戏上看到过这个功能,当你打开游戏时如果已经有一个游戏在运行,会提示你并自动关闭,但我找不到那个游戏了,不知道有没有人也见过类似的脚本?
作者: SixRC    时间: 2020-8-21 02:11
本帖最后由 SixRC 于 2020-8-21 02:14 编辑

简单版本
插到随便什么地方
RUBY 代码复制
  1. name = "tst20200818xx"
  2. if Win32API.new("kernel32", "OpenEventA", "llp", "l").call(2, 0, name) != 0
  3.   p "已有实例运行"
  4.   exit
  5. end
  6. if Win32API.new("kernel32", "CreateEventA", "lllp", "l").call(0, 0, 0, name) == 0
  7.   p "名称有误"
  8.   exit
  9. end

name改的有独特性就行 免得冲突
类似的做法还有些别的东西 类似的同步量 文件独占 等
原理基本上都是创建个东西 程序退出了系统会擦屁股 后来者不能二次进行或知道前任干过 这种
麻烦的有枚举窗口或进程来看有没有打开过 嗯 麻烦 没意思

上面这个是通过ruby去执行的 需要等窗口等游戏资源初始化完了再执行  优点是插到脚本就行 缺点是慢
为了让游戏打开之初就执行
可以魔改game.exe 让他运行的开始就检测 这个稍微麻烦
简单点的是 写个 dll 比方
cpp

然后找个PE编辑器 把这个 dll 添加到 game.exe 的导入表
这样一点开程序(几乎)第一时间就会检测
要加别的小功能 比方打开第一个运行的游戏窗口 也是这样比较简单 拓展性好


为什么隔了这么久才回复呢?
因为不喜欢楼主有了一个答案就溜不爱看/回复底楼层这点
其实不是这么久没人回复本来也不想回复的
现在回复也只是为了自己高兴
发发牢骚 就这样吧





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1