×
大家都在搜

DBNT云维护技术支持 - 深圳市聚源科技有限公司

QQ登录

只需一步,快速开始

+发表新主题

[求助] 如何只允许一个实例运行?

[复制链接]

[求助] 如何只允许一个实例运行?

不是小灵通 发表于 2015-9-22 10:08:57 浏览:  718 回复:  2 [显示全部楼层] 回帖奖励 |倒序浏览 |阅读模式
背景:弄了个考试用的程序,控制不允许插U盘
原理:两个程序A/B,运行其中之一,即可自动启动另外一个程序,且二者相互守护,从而尽可能避免考生将其终止。
但有个小细节没能解决:当用户再次或多次点击A或B的时候,进程会出现多个程序
所以想弄段代码进行控制,其中一个的主要代码,守护ABC.exe

  1. #include <Misc.au3>;只允许一个实体
  2. Opt("TrayMenuMode", 3);禁止托盘显示及退出

  3. Local $PEB=ProcessExists ( "ABC.exe" )

  4. If $PEB=0 Then;若ABC进程不存在(第一次进入)
  5. Run( "ABC.exe")
  6. MsgBox(4096, "提示", "ABC程序已经启动",30)
  7. EndIf

  8. While 1
  9. If $PEB=0 Then;若ABC进程不存在
  10. Run( "ABC.exe")
  11. ;只允许一个ABC进程【这里不会写了,没能理解_Singleton的含义和用法】
  12. ;若没有一个只能允许一个进程的语句,则ABC.EXE可以被多次点击占据内存中




  13. Else
  14. ;其他动作

  15. EndIf

  16. Sleep(200)
  17. WEnd
复制代码


接触AU3不多,不知道上述程序是否合理,也请帮忙指点
如果我穿越了,我就先帮亲们灭了日本
回复

使用道具 举报

Trans Trans 发表于 2015-9-22 11:46:05 显示全部楼层
在最开始加上
  1. $g_szVersion = "脚本1"
  2. If WinExists($g_szVersion) Then
  3.         MsgBox(0, "提示", "程序已经运行")
  4.         Exit
  5. EndIf
  6. AutoItWinSetTitle($g_szVersion)
复制代码
回复 支持 反对

使用道具 举报

leland leland 发表于 2016-1-17 12:47:25 显示全部楼层
CreateMutex~~~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

DBNT云维护技术支持 - 深圳市聚源科技有限公司 ( 粤ICP备17103197号 )

-