Ранее в AutoIt3 использовал функцию копирования средствами Windows, нашёл также тему на PureBasic. Но сначала попробовал использовать ранее проверенную годами, хотя в принципе они практически идентичны, кроме: в AutoIt3 была проверка GetLastError и в AutoIt3 варианте было как я понял возможность брошенные в окно файлы, разделённые Chr(10) использовать как копирование выделенных файлов/папок, то есть множественный выбор, но я не стал это делать, а просто вырезал эту часть кода воспринимая путь как одну строку.

Код:
; http://www.autoitscript.com/forum/topic/11888-yet-another-copy-With-progress/
EnableExplicit

#FO_MOVE           = $0001
#FO_COPY           = $0002
#FO_DELETE         = $0003
#FO_RENAME         = $0004

#FOF_MULTIDESTFILES    = $0001
#FOF_CONFIRMMOUSE      = $0002
#FOF_SILENT        = $0004
#FOF_RENAMEONCOLLISION	 = $0008
#FOF_NOCONFIRMATION    = $0010
#FOF_WANTMAPPINGHANDLE	 = $0020
#FOF_ALLOWUNDO    	 = $0040
#FOF_FILESONLY    	 = $0080
#FOF_SIMPLEPROGRESS    = $0100
#FOF_NOCONFIRMMKDIR    = $0200
#FOF_NOERRORUI    	 = $0400
#FOF_NOCOPYSECURITYATTRIBS = $0800
#FOF_NORECURSION       = $1000
#FOF_NO_CONNECTED_ELEMENTS = $2000
#FOF_WANTNUKEWARNING	   = $4000
#FOF_NORECURSEREPARSE	  = $8000

Procedure CopyWithProgress(sFrom$, sTo$)
	Protected DllRet, nError = 0
	Protected SHFileOp.SHFILEOPSTRUCT
	SHFileOp\hwnd = 0
	SHFileOp\wFunc = #FO_COPY
	SHFileOp\pFrom = @sFrom$
	SHFileOp\pTo = @sTo$
	SHFileOp\fFlags = #FOF_NOCONFIRMMKDIR | #FOF_NOCONFIRMATION | #FOF_NOERRORUI
	SHFileOp\fAnyOperationsAborted = 0
	SHFileOp\hNameMappings = 0
	SHFileOp\lpszProgressTitle = 0
	
	DllRet = SHFileOperation_(SHFileOp)
	If DllRet = 0
    nError = GetLastError_()
    ProcedureReturn nError
	EndIf
	If SHFileOp\fAnyOperationsAborted
    nError = -1
	EndIf
	If nError
    ProcedureReturn nError
	EndIf
	ProcedureReturn 0
EndProcedure

; 0 = удачно
CopyWithProgress("путь_источник", "путь_назначения")

А это с чего всё началось: yandex upload.ee

Отредактировано AZJIO (15.08.2021 08:07:23)