747957181 发表于 2012-6-18 09:09:41

如何弹出删除确认对话框

用AU3删除文件时如何弹出系统自带的删除确认对话框?(如下图)

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

afan 发表于 2012-6-18 09:40:42

#include <WinAPIEx.au3>

$sTemp = @ScriptFullPath & '.bak'
FileCopy(@ScriptFullPath, $sTemp)
_WinAPI_ShellFileOperation($sTemp, '', $FO_DELETE, $FOF_ALLOWUNDO)

kyniel 发表于 2012-6-18 10:38:41

顶a版
还要加个#Include <APIConstants.au3>

afan 发表于 2012-6-18 10:45:47

顶a版
还要加个#Include
kyniel 发表于 2012-6-18 10:38 http://www.autoitx.com/images/common/back.gif


    我的Au3版本是 3.3.6.1,不用加 #Include <APIConstants.au3> 呢~

happytc 发表于 2012-6-18 12:14:17

我的Au3版本是 3.3.6.1,不用加 #Include呢~
afan 发表于 2012-6-18 10:45 http://www.autoitx.com/images/common/back.gif


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

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


Global Const $iTmp = 5
MsgBox(0,0,IsDeclared($iTmp));这里为什么返回是1?
;If Not IsDeclared($iTmp) Then Global Const $iTmp = 10 ;这句根本不管用了,所以经常要手工注释掉au3文件里重复定义的常量

afan 发表于 2012-6-18 12:17:22

其实真的很烦au3这种频繁更改一些windows常量所放之处
远不如像别的语言一样,直接放在编译器里 ...
happytc 发表于 2012-6-18 12:14 http://www.autoitx.com/images/common/back.gif

IsDeclared 参数弄错了…Global Const $iTmp = 5
MsgBox(0, 0, IsDeclared('iTmp'))

happytc 发表于 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

afan 发表于 2012-6-18 12:30:18

回复afan


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

你注释错了,应该注释声明那句
    ;Global Const $iTmp = 5
If Not IsDeclared('iTmp') Then Global Const $iTmp = 10

happytc 发表于 2012-6-18 12:47:31

你注释错了,应该注释声明那句
    ;Global Const $iTmp = 5
If Not IsDeclared('iTmp') Then Global ...
afan 发表于 2012-6-18 12:30 http://www.autoitx.com/images/common/back.gif

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

看上去很美,但根本不管用。

afan 发表于 2012-6-18 12:59:06

看上去很美,但根本不管用 ...
happytc 发表于 2012-6-18 12:47 http://www.autoitx.com/images/common/back.gif


    管用是肯定的,不管用是因为你使用方法不正确。
能写两个脚本来证明不管用吗?

happytc 发表于 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文件,肯定报错嘛

afan 发表于 2012-6-18 13:32:45

回复afan


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

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

afan 发表于 2012-6-18 13:37:32

回复 11# happytc


    你用 Assign 声明一个变量再使用,SciTE 同样会报错,而实际是完全正确可执行的。Assign('a', 888)
msgbox(0, 0, $a)

lchl0588 发表于 2012-6-18 13:57:52

回复 13# afan Dim $a=10   ;这里是开关
If IsDeclared("a") Then
        MsgBox(0,0,"对")
Else
        MsgBox(0,1,"错")
EndIf这样解释行不行?

afan 发表于 2012-6-18 14:02:19

回复 14# lchl0588


    用词不太准确,“开关”…
没有对与错,“对”应该解释为“已声明”,“错”应该解释为“未声明”
页: [1] 2
查看完整版本: 如何弹出删除确认对话框