找回密码
 加入
搜索
查看: 8096|回复: 25

[AU3基础] 如何弹出删除确认对话框

 火.. [复制链接]
发表于 2012-6-18 09:09:41 | 显示全部楼层 |阅读模式
用AU3删除文件时如何弹出系统自带的删除确认对话框?(如下图)

上图所示为使用千千静听“从磁盘删除”功能弹出的删除文件确认对话框。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×

评分

参与人数 1金钱 -20 贡献 -2 收起 理由
afan -20 -2

查看全部评分

发表于 2012-6-18 09:40:42 | 显示全部楼层
#include <WinAPIEx.au3>

$sTemp = @ScriptFullPath & '.bak'
FileCopy(@ScriptFullPath, $sTemp)
_WinAPI_ShellFileOperation($sTemp, '', $FO_DELETE, $FOF_ALLOWUNDO)
发表于 2012-6-18 10:38:41 | 显示全部楼层
顶a版
还要加个#Include <APIConstants.au3>
发表于 2012-6-18 10:45:47 | 显示全部楼层
顶a版
还要加个#Include
kyniel 发表于 2012-6-18 10:38



    我的Au3版本是 3.3.6.1,不用加 #Include <APIConstants.au3> 呢~
发表于 2012-6-18 12:14:17 | 显示全部楼层
我的Au3版本是 3.3.6.1,不用加 #Include  呢~
afan 发表于 2012-6-18 10:45



    其实真的很烦au3这种频繁更改一些windows常量所放之处
远不如像别的语言一样,直接放在编译器里好

并且好像IsDeclared函数也不好使(不知那里错了)


Global Const $iTmp = 5
MsgBox(0,0,IsDeclared($iTmp))  ;这里为什么返回是1?
;If Not IsDeclared($iTmp) Then Global Const $iTmp = 10 ;这句根本不管用了,所以经常要手工注释掉au3文件里重复定义的常量
发表于 2012-6-18 12:17:22 | 显示全部楼层
其实真的很烦au3这种频繁更改一些windows常量所放之处
远不如像别的语言一样,直接放在编译器里 ...
happytc 发表于 2012-6-18 12:14


IsDeclared 参数弄错了…
Global Const $iTmp = 5
MsgBox(0, 0, IsDeclared('iTmp'))
发表于 2012-6-18 12:27:58 | 显示全部楼层
回复 6# afan


    关键后面的这句:If Not IsDeclared('iTmp') Then Global Const $iTmp = 10
为什么不管用,害得都去手工注释掉

Global Const $iTmp = 5
If Not IsDeclared('iTmp') Then Global Const $iTmp = 10
发表于 2012-6-18 12:30:18 | 显示全部楼层
回复  afan


    关键后面的这句:If Not IsDeclared('iTmp') Then Global Const $iTmp = 10
为什么不 ...
happytc 发表于 2012-6-18 12:27


你注释错了,应该注释声明那句
    ;Global Const $iTmp = 5
If Not IsDeclared('iTmp') Then Global Const $iTmp = 10
发表于 2012-6-18 12:47:31 | 显示全部楼层
你注释错了,应该注释声明那句
    ;Global Const $iTmp = 5
If Not IsDeclared('iTmp') Then Global ...
afan 发表于 2012-6-18 12:30


不是这个意思,而是如何可以重复申明常量/变量:经常遇到这种情况,就是一个au3文件里已经申明过一个常量了,而在另外一个au3文件由于不知道是否别的#inlcude文件里已经申明过了,就来个判断,经常象下面:
If Not IsDeclared("NIM_ADD")                                Then Global Const $NIM_ADD = 0x00000000

看上去很美,但根本不管用。
发表于 2012-6-18 12:59:06 | 显示全部楼层
看上去很美,但根本不管用 ...
happytc 发表于 2012-6-18 12:47



    管用是肯定的,不管用是因为你使用方法不正确。
能写两个脚本来证明不管用吗?
发表于 2012-6-18 13:21:05 | 显示全部楼层
回复 10# afan


    啊,你还没有明白我的意思呀
不用写两个脚本,就是只要前面已经申明过了,后面再申明,肯定报错呀


Global Const $iTmp = 5
If Not IsDeclared('iTmp') Then Global Const $iTmp = 10


其实不管上面if条件是否成立都会报错的,如:

Global Const $iTmp = 5
;If 1 Then Global Const $iTmp = 10
;If 0 Then Global Const $iTmp = 10 ;就是去掉这句的注释也会报错的


又如两个脚本的情况:Test.au3和tmp.au3
Test.au3的内容就下面一句:
Global Const $iTmp = 56


而tmp.au3里的内容就下面两句,如下:

#include 'Test.au3'
If Not IsDeclared('iTmp') Then Global Const $iTmp = 10

运行tmp.au3文件,肯定报错嘛
发表于 2012-6-18 13:32:45 | 显示全部楼层
回复  afan


    啊,你还没有明白我的意思呀
不用写两个脚本,就是只要前面已经申明过了,后面再申明 ...
happytc 发表于 2012-6-18 13:21


你是用 SciTE 编辑器运行的?而且是 SciTE 编辑器报的错? 如此的话就正常了。Au3Check 不准的,它是基于字符串的操作,所有的代码,包括 IsDeclared () 并未运行(和代码迷惑的原理一样),所以才会“友情提示”。可以直接忽略。
为什么不直接运行呢,Au3 解释器才是老大。我不用SciTE 编辑器的,所以从不会收到这些“垃圾短信”…
发表于 2012-6-18 13:37:32 | 显示全部楼层
回复 11# happytc


    你用 Assign 声明一个变量再使用,SciTE 同样会报错,而实际是完全正确可执行的。
Assign('a', 888)
msgbox(0, 0, $a)
发表于 2012-6-18 13:57:52 | 显示全部楼层
回复 13# afan
Dim $a=10   ;这里是开关
If IsDeclared("a") Then
        MsgBox(0,0,"对")
Else
        MsgBox(0,1,"错")
EndIf
这样解释行不行?
发表于 2012-6-18 14:02:19 | 显示全部楼层
回复 14# lchl0588


    用词不太准确,“开关”…
没有对与错,“对”应该解释为“已声明”,“错”应该解释为“未声明”
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-6-1 13:10 , Processed in 0.092884 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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