【问题标题】:How do I get the cause of a copy failure in AutoIt?如何在 AutoIt 中获取复制失败的原因?
【发布时间】:2016-08-12 08:14:58
【问题描述】:

AutoIt FileCopy method 定义了以下返回值:

返回值

成功:1.
失败:0。

显然,当文件复制操作失败时,我想告诉用户为什么它失败了。我如何获得这些信息?

【问题讨论】:

    标签: autoit


    【解决方案1】:

    编辑:用消息输出重写函数(最后一个错误不适用于 au3 文件复制)

    ConsoleWrite(copyFile("./ft", "./tg8"))
    
    
    Func copyFile($source, $dest)
    
        $ret = DllCall("kernel32.dll", "int", _
                "CopyFileEx", _ ; W
                "str", $source, _
                "str", $dest, _
                "ptr", Null, _ ;no callback
                "str", Null, _
                "int", 0, _
                "int", 0)
    
        Return _GetLastErrorFormatMessage()
    
    EndFunc   ;==>copyFile
    
    
    
    Func _GetLastErrorFormatMessage()
        Local Const $FORMAT_MESSAGE_FROM_SYSTEM = 0x00001000
        Local $ret = ""
        Local $message = ""
        Local $err = ""
        Local $buff = DllStructCreate("char[4096]")
    
        $err = DllCall("Kernel32.dll", "int", "GetLastError")
        $ret = DllCall("kernel32.dll", "int", "FormatMessage", _
                "int", $FORMAT_MESSAGE_FROM_SYSTEM, _
                "ptr", 0, _
                "int", $err[0], _
                "int", 0, _
                "ptr", DllStructGetPtr($buff), _
                "int", 4096, _
                "ptr", 0)
        $message = DllStructGetData($buff, 1)
        $buff = Null
        Return $message
    EndFunc   ;==>_GetLastErrorFormatMessage
    

    【讨论】:

      猜你喜欢
      • 2016-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-26
      相关资源
      最近更新 更多