窗口程序集名 | 保 留 | 保 留 | 备 注 |
窗口程序集_启动窗口 | | | |
变量名 | 类 型 | 数组 | 备 注 |
VX路径 | 文本型 | |
互斥体名称 | 文本型 | 2 |
ico图标 | 字节集 | |
窗口信息 | 记录型 | |
VX进程列表 | 整数型 | 0" ' 存储VX进程ID |
启动延迟 | 整数型 ' 启动延迟时间(毫秒) | |
启动窗口.左边
= (屏幕宽度 - 启动窗口.宽度
) ÷ 2
启动窗口.顶边
= (屏幕高度 - 启动窗口.高度
) ÷ 2
启动窗口.标题 =
“VX多开器 - 可视化版”启动窗口.边框 =
#无边框 启动窗口.背景颜色 =
#F0F0F0 编辑框1.内容 =
读配置项 (取运行目录 () +
“\config.ini”,
“设置”,
“多开数量”,
“2”) 编辑框1.密码输入 = 假
编辑框1.边框样式 =
#边框样式_细边框 编辑框1.文本颜色 =
#000000 编辑框1.背景颜色 =
#FFFFFF 按钮1.标题 =
“启动多开”按钮1.背景颜色 =
#00B42A 按钮1.文本颜色 =
#FFFFFF 按钮1.字体.加粗 = 真
按钮2.标题 =
“最小化”按钮2.背景颜色 =
#FF7D00 按钮2.文本颜色 =
#FFFFFF 按钮2.字体.加粗 = 真
按钮3.标题 =
“退出”按钮3.背景颜色 =
#F53F3F 按钮3.文本颜色 =
#FFFFFF 按钮3.字体.加粗 = 真
按钮4.标题 =
“关闭所有VX”按钮4.背景颜色 =
#722ED1 按钮4.文本颜色 =
#FFFFFF 按钮4.字体.加粗 = 真
按钮5.标题 =
“刷新进程”按钮5.背景颜色 =
#1890FF 按钮5.文本颜色 =
#FFFFFF 按钮5.字体.加粗 = 真
标签1.标题 =
“多开数量:”标签1.文本颜色 =
#333333 标签2.标题 =
“状态:就绪”标签2.文本颜色 =
#333333 标签2.背景颜色 =
#FFFFFF 标签2.边框 = 真
标签3.标题 =
“VX多开器 v1.0”标签3.文本颜色 =
#1E88E5 标签3.字体.加粗 = 真
标签3.字体.大小 = 12
进度条1.位置 = 0
进度条1.边框 = 真
进度条1.颜色 =
#00B42A 编辑框2.内容 =
“欢迎使用VX多开器!
”编辑框2.多行 = 真
编辑框2.滚动条 =
#纵向滚动条 编辑框2.只读 = 真
编辑框2.背景颜色 =
#FFFFFF 编辑框2.边框 = 真
互斥体名称
[1
] =
“Global\_WeChat_App_Instance_Identity_Mutex_Name”互斥体名称
[2
] =
“WeChat_App_Instance_Identity_Mutex_Name” ico图标 =
#图标1 置窗口图标 (启动窗口.
取窗口句柄 (), ico图标
) 启动延迟 =
到整数 (读配置项 (取运行目录 () +
“\config.ini”,
“设置”,
“启动延迟”,
“1000”))
刷新VX进程列表 ().局部变量 数量, 整数型
.局部变量 i, 整数型
.局部变量 启动成功数, 整数型
.局部变量 延迟输入, 文本型
如果真 (取文本长度 (编辑框1.内容
) = 0
)
信息框 (“请输入多开数量”, 0,
“提示”)
返回 ()数量 =
到整数 (编辑框1.内容
)
如果真 (数量 < 1
或 数量 > 10
)
信息框 (“请输入1-10之间的数量”, 0,
“提示”)
编辑框1.内容 =
“2”
返回 () 延迟输入 =
输入框 (“请输入启动延迟时间(毫秒,默认为1000)”,
“启动设置”,
“1000”)
如果真 (延迟输入 =
“”)
启动延迟 = 1000
如果真 (延迟输入 ≠
“”)
启动延迟 =
到整数 (延迟输入
)
如果真 (启动延迟 < 500
或 启动延迟 > 5000
)

启动延迟 = 1000

信息框 (“延迟时间范围为500-5000毫秒,已设为默认值1000毫秒”, 0,
“提示”)


如果真 (提升权限 () =
假)

如果真 (信息框 (“需要管理员权限才能正常工作,是否继续?”, 1,
“权限提示”) =
#取消按钮 )

返回 ()


VX路径 =
获取VX安装路径 ()
如果真 (VX路径 =
“”)

VX路径 =
浏览文件 (“请选择VX程序”,
“VX程序|WeChat.exe|所有文件|*.*”, ,
)

如果真 (VX路径 =
“” 或 取文本右边 (VX路径, 11
) ≠
“WeChat.exe”)

信息框 (“未找到有效的VX程序”, 0,
“错误”)

返回 ()

写配置项 (取运行目录 () +
“\config.ini”,
“设置”,
“多开数量”, 编辑框1.内容
)
写配置项 (取运行目录 () +
“\config.ini”,
“设置”,
“启动延迟”,
到文本 (启动延迟
))

重定义数组 (VX进程列表, 假, 0
)

按钮1.禁止 = 真

进度条1.最大位置 = 数量

进度条1.位置 = 0

启动成功数 = 0

标签2.标题 =
“正在启动第1个VX...”
编辑框2.
加入文本 (“===== 开始多开操作 =====
”)

编辑框2.
加入文本 (“多开数量: ” +
到文本 (数量
) +
“
”)

编辑框2.
加入文本 (“启动延迟: ” +
到文本 (启动延迟
) +
“毫秒
”)


计次循环首 (数量, i
)


计次循环首 (2,
)

关闭VX互斥体 (互斥体名称
[循环变量2
])

计次循环尾 ()




编辑框2.
加入文本 (“正在启动第” +
到文本 (i
) +
“个VX实例...
”)


如果真 (启动VX ())



启动成功数 = 启动成功数 + 1



编辑框2.
加入文本 (“成功启动第” +
到文本 (i
) +
“个VX实例
”)





进度条1.位置 = i


标签2.标题 =
“正在启动第” +
到文本 (i + 1
) +
“个VX...”
处理事件 ()
延迟 (启动延迟
)
计次循环尾 ()

标签2.标题 =
“启动完成:成功” +
到文本 (启动成功数
) +
“个/共” +
到文本 (数量
) +
“个”
编辑框2.
加入文本 (“===== 多开操作完成 =====
”)

编辑框2.
加入文本 (“成功启动: ” +
到文本 (启动成功数
) +
“个
”)

编辑框2.
加入文本 (“失败数量: ” +
到文本 (数量 - 启动成功数
) +
“个
”)

按钮1.禁止 = 假
信息框 (“操作完成,成功启动” +
到文本 (启动成功数
) +
“个VX实例”, 0,
“提示”)

启动窗口.
最小化 ()
写配置项 (取运行目录 () +
“\config.ini”,
“设置”,
“多开数量”, 编辑框1.内容
)
结束 ()
.局部变量 hToken, 整数型

.局部变量 tkp, TOKEN_PRIVILEGES

.局部变量 结果, 逻辑型


结果 = 假

tkp.PrivilegeCount = 1

如果真 (OpenProcessToken (GetCurrentProcess (),
位或 ( #TOKEN_QUERY, #TOKEN_ADJUST_PRIVILEGES ), hToken
))


如果真 (LookupPrivilegeValue (,
#SE_DEBUG_NAME, tkp.Privileges
[1
].Luid
))



tkp.Privileges
[1
].Attributes =
#SE_PRIVILEGE_ENABLED 


结果 =
AdjustTokenPrivileges (hToken, 假, tkp, 24, 0, 0
)
CloseHandle (hToken)
返回 (结果)|
(暂未填写DLL命令名) | | |
|
(未填写库文件名) |
|
(未填写命令名) |
|
互斥体名称 | 文本型 | | |

.局部变量 hMutex, 整数型


.尝试


hMutex =
OpenMutex ( #MAXIMUM_ALLOWED, 假, 互斥体名称
)

如果真 (hMutex ≠ 0
)

CloseHandle (hMutex
)

返回 (真)
.捕获
返回 (假)
.局部变量 注册表项, 整数型

.局部变量 安装路径, 文本型

.局部变量 默认路径, 文本型, , "3"

.局部变量 i, 整数型


默认路径
[1
] =
“C:\Program Files\Tencent\WeChat\WeChat.exe”
默认路径
[2
] =
“C:\Program Files (x86)\Tencent\WeChat\WeChat.exe”
默认路径
[3
] =
“D:\Program Files\Tencent\WeChat\WeChat.exe”

如果真 (RegOpenKey ( #HKEY_CURRENT_USER, “Software\Tencent\WeChat”, 注册表项
) =
#ERROR_SUCCESS )
RegQueryValueEx (注册表项,
“InstallPath”, 安装路径
)
RegCloseKey (注册表项
)

如果真 (文件是否存在 (安装路径 +
“\WeChat.exe”))


返回 (安装路径 +
“\WeChat.exe”)


计次循环首 (3, i
)

如果真 (文件是否存在 (默认路径
[i
]))


返回 (默认路径
[i
])

计次循环尾 ()
返回 (“”)
.局部变量 进程ID, 整数型

.局部变量 命令行, 文本型


.尝试



命令行 = VX路径 +
“ /AUTO” 




进程ID =
运行 (命令行, 假,
#SW_SHOWNORMAL )



如果真 (进程ID = 0
)




进程ID =
ShellExecute (0,
“open”, VX路径,
“/AUTO”, ,
#SW_SHOWNORMAL )


如果真 (进程ID > 32
)





加入成员 (VX进程列表, 进程ID
)


返回 (真)

返回 (假)



加入成员 (VX进程列表, 进程ID
)
返回 (真)
.捕获


编辑框2.
加入文本 (“启动VX时发生错误: ” +
取错误信息 () +
“
”)

返回 (假)


打开指定网址 (“https://weixin.qq.com/”) 
.局部变量 进程列表, 进程信息, , "0"

.局部变量 i, 整数型

.局部变量 关闭成功数, 整数型


关闭成功数 = 0

编辑框2.
加入文本 (“===== 开始关闭所有VX实例 =====
”)


进程列表 =
枚举进程 ()

计次循环首 (取数组成员数 (进程列表
), i
)

如果真 (取文本右边 (进程列表
[i
].进程名称, 11
) =
“WeChat.exe”)


如果真 (终止进程 (进程列表
[i
].进程ID
))




关闭成功数 = 关闭成功数 + 1




编辑框2.
加入文本 (“成功关闭进程ID: ” +
到文本 (进程列表
[i
].进程ID
) +
“
”)



计次循环尾 ()|
eAPI |
spec |
shell |
commctrl | (未知支持库) |
bmpoper | (未知支持库) |