CopyFileW返回0,但GetLastError也返回0
问题描述:
从VBA调用CopyFileW,如下所示,使用不存在的目标文件夹给出由CopyFileW返回的值0,但GetLastError也返回0,表示操作成功。如何从失败的CopyW操作中获取错误代码?CopyFileW返回0,但GetLastError也返回0
Dim Ret As Long
sFrom = "\\?\UNC" & Mid(sFrom, 2)
Ret = CopyFileW(StrPtr(sFrom), StrPtr(sTo), False)
If Ret = 0 Then
Call LogErrorFilFol(GetFileFromPath(sFrom), GetFolderFromPath(sFrom), _
"WCopyFile error - " & ErrorMsg(GetLastError), FileID)
End If
答
不要致电GetLastError
从VBA,请使用Err.LastDllError
。
CopyFile返回后必须立即调用GetLastError。你不仅可以调用其他函数,VB运行时也可能调用其他函数作为互操作层的一部分。 – 2012-03-26 01:27:08