Func _CreateProcess($sAppName, $sCommand, $pSecurity, $pThread, $fInherit, $iFlags, $pEnviron, $sDir, $pStartupInfo, $pProcess)
Local $pAppName, $tAppName, $pCommand, $tCommand, $pDir, $tDir, $aResult
if $sAppName <> "" then
$tAppName = DllStructCreate("char Text[" & Stringlen($sAppName) + 1 & "]")
$pAppName = DllStructGetPtr($tAppName)
DllStructSetData($tAppName, "Text", $sAppName)
endif
if $sCommand <> "" then
$tCommand = DllStructCreate("char Text[" & Stringlen($sCommand) + 1 & "]")
$pCommand = DllStructGetPtr($tCommand)
DllStructSetData($tCommand, "Text", $sCommand)
endif
if $sDir <> "" then
$tDir = DllStructCreate("char Text[" & Stringlen($sDir ) + 1 & "]")
$pDir = DllStructGetPtr($tDir)
DllStructSetData($tDir, "Text", $sDir)
endif
$aResult = DllCall("Kernel32.dll", "int", "CreateProcess", "ptr", $pAppName, "ptr", $pCommand, "ptr", $pSecurity, "ptr", $pThread, _
"int", $fInherit, "int", $iFlags, "ptr", $pEnviron, "ptr", $pDir, "ptr", $pStartupInfo, "ptr", $pProcess)
Return SetError(GetLastErreur(), 0, $aResult[0]<>0)
EndFunc
Func GetLastErreur()
Local $aResult
$aResult = DllCall("Kernel32.dll", "int", "GetLastError")
Return $aResult[0]
EndFunc
It's in A3LWinAPI.au3