The function _FileCopy already exists so there is no need for the other function for example:
#include <GUIConstantsEx.au3>
$Form1 = GUICreate("Form1", 380, 169, 192, 154)
$Button1 = GUICtrlCreateButton("Copy", 72, 88, 177, 57)
$idSource = GUICtrlCreateInput(@ScriptFullPath, 24, 8, 313, 21)
$idTarget = GUICtrlCreateInput(@ScriptDir & "\ScriptCopy\", 24, 40, 313, 21)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $button1
$sSource = GUICtrlRead($idSource)
$sTarget = GUICtrlRead($idTarget)
If FileExists($sSource) = 0 Or $sTarget = "" Then ContinueLoop
_FileCopy($sSource, $sTarget)
EndSwitch
WEnd
Func _FileCopy($sCopySource,$sCopyTargetDir)
Local $FOF_RESPOND_YES = 16
Local $FOF_SIMPLEPROGRESS = 256
If Not FileExists($sCopyTargetDir) Then DirCreate($sCopyTargetDir)
$winShell = ObjCreate("shell.application")
$winShell.namespace($sCopyTargetDir).CopyHere($sCopySource,$FOF_RESPOND_YES)
EndFunc