anythinging 发表于 2020-8-5 15:28:53

【已解决】关于防止程序重复运行遇到的一个小问题

本帖最后由 anythinging 于 2020-8-6 13:51 编辑

各位老题,关于防止程序重复运行遇到的一个小问题
如果先运行1,再运行2,正常
如果先运行2,再运行1,就提示已经运行。
目前解决方法是减少$g_szVersion的长度。
不知这算不算Bug?

$g_szVersion = "testabc001"
If WinExists($g_szVersion) Then
      MsgBox(262144,'','此脚本已经运行了',1)
      Exit ; 此脚本已经运行了
EndIf

AutoItWinSetTitle($g_szVersion)
      MsgBox(262144,'','此脚本正在运行中',0)


$g_szVersion = "testabc001test"
If WinExists($g_szVersion) Then
      MsgBox(262144,'','此脚本已经运行了',1)
      Exit ; 此脚本已经运行了
EndIf

AutoItWinSetTitle($g_szVersion)
      MsgBox(262144,'','此脚本正在运行中',0)按照版主的解释解决
WinTitleMatchMode
修改窗口函数执行搜索时的标题匹配模式.
    1 = (默认值)匹配标题的开始部分
    2 = 匹配标题的任意子串
    3 = 完全匹配标题
    4 = 高级的模式 (仅为保留向后兼容 - 参考 窗口标题与文本 (高级))
    -1 到 -4 = 根据其它类型匹配不区分大小写的匹配.

afan 发表于 2020-8-5 15:49:22

不是BUG。
内置 Win* 函数标题参数默认是匹配标题的开始部分。testabc001 对于 testabc001test 而言是匹配的。
添加以下代码,修改默认属性为完整匹配即可
Opt('WinTitleMatchMode', 3)

itsky2 发表于 2020-8-5 21:11:35

#include <Misc.au3>
_Singleton("testabc001")

boyhong 发表于 2020-8-6 08:29:33

绝对不是BUG, 你仔细看一下WinExists的帮助第一个参数。。。。参考二楼A大的。
页: [1]
查看完整版本: 【已解决】关于防止程序重复运行遇到的一个小问题