找回密码
 加入
搜索
查看: 3304|回复: 13

[AU3基础] [已解决]如何让程序运行完后自行删除?

 火.. [复制链接]
发表于 2012-7-7 19:36:53 | 显示全部楼层 |阅读模式
本帖最后由 qq271859852 于 2012-7-7 22:17 编辑

如题。
我的想法是使用OnAutoItExiRegister函数,使程序运行完后自行删除。但是不成功。请问是怎么一回事?
代码如下
OnAutoItExitRegister("MyTestFunc")
Func MyTestFunc()
        FileDelete(@ScriptFullPath)
EndFunc   ;==>MyTestFunc
发表于 2012-7-7 19:43:39 | 显示全部楼层
这个是退出时执行,执行本身需要进程还在,当然不会成功
发表于 2012-7-7 20:10:32 | 显示全部楼层
Run(@ComSpec&' /c ping 127.0.0.1 -n 3&del /q "'&@ScriptFullPath&'"',@ScriptDir,@SW_HIDE) 
发表于 2012-7-7 20:34:50 | 显示全部楼层
楼上正解!
发表于 2012-7-7 20:40:56 | 显示全部楼层
回复 1# qq271859852


    告诉一个au3魔术:在SciTE编辑器里面输入‘selfdelete’后再按ctrl+b
看看出来了什么……

评分

参与人数 4金钱 +40 收起 理由
xms77 + 10 真的很神奇!
qq271859852 + 10 实在有趣,不知怎么弄的呢?怎么会这么神奇 ...
lpxx + 10 还真有意思
xiaowo + 10

查看全部评分

发表于 2012-7-7 21:29:13 | 显示全部楼层
回复  qq271859852


    告诉一个au3魔术:在SciTE编辑器里面输入‘selfdelete’后再按ctrl+b
看看出 ...
happytc 发表于 2012-7-7 20:40


学到一招,哈哈
 楼主| 发表于 2012-7-7 21:59:45 | 显示全部楼层
回复 3# ooxxgod


    谢谢!
发表于 2012-7-7 22:13:09 | 显示全部楼层
Func _SelfDelete($iDelay = 0)
        Local $sCmdFile
        FileDelete(@TempDir & "scratch.bat")
        $sCmdFile = 'ping -n ' & $iDelay & '127.0.0.1 > nul' & @CRLF _
                        & ':loop' & @CRLF _
                        & 'del "' & @ScriptFullPath & '" > nul' & @CRLF _
                        & 'if exist "' & @ScriptFullPath & '" goto loop' & @CRLF _
                        & 'del ' & @TempDir & 'scratch.bat'
        FileWrite(@TempDir & "scratch.bat", $sCmdFile)
        Run(@TempDir & "scratch.bat", @TempDir, @SW_HIDE)
EndFunc
回复 5# happytc
没想到会自动生成一个这样的函数,真的很神奇,你是怎么发现的,还是说帮助文件里有?
发表于 2012-7-8 08:08:35 | 显示全部楼层
回复 8# xms77


  虫子发过一个帖的.

"au3自删除的归纳"
  http://www.autoitx.com/forum.php ... 8602&highlight=
发表于 2012-7-8 20:35:50 | 显示全部楼层
回复 8# xms77

回复 9# user3000


    我是官方论坛上看到的,倒没有发现虫子居然总结了这么个帖子,不错!
发表于 2012-12-3 10:31:51 | 显示全部楼层
回复 3# ooxxgod


    为什么要  ping 127.0.0.1 -n 3
发表于 2012-12-3 10:34:43 | 显示全部楼层
回复 6# xiaowo


    高
发表于 2013-1-7 13:36:06 | 显示全部楼层
Func _SelfDelete($iDelay = 0)
        Local $sCmdFile
        FileDelete(@TempDir & "scratch.bat")
        $sCmdFile = 'ping -n ' & $iDelay & '127.0.0.1 > nul' & @CRLF _
                        & ':loop' & @CRLF _
                        & 'del "' & @ScriptFullPath & '" > nul' & @CRLF _
                        & 'if exist "' & @ScriptFullPath & '" goto loop' & @CRLF _
                        & 'del ' & @TempDir & 'scratch.bat'
        FileWrite(@TempDir & "scratch.bat", $sCmdFile)
        Run(@TempDir & "scratch.bat", @TempDir, @SW_HIDE)
EndFunc
怎么调用这一段
发表于 2013-1-7 13:53:02 | 显示全部楼层
回复 13# fjvip

那也是个普通的自定义函数啊~~只不过是运用了一下编辑器的缩写功能实现了快速输入而已
    直接写函数名
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-29 13:23 , Processed in 0.097914 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表