| Dark Byte Site Admin
 
  Reputation: 470 
 Joined: 09 May 2003
 Posts: 25807
 Location: The netherlands
 
 | 
			
				|  Posted: Fri Apr 29, 2022 9:04 am    Post subject: LaunchCommandAndWait |   |  
				| 
 |  
				| Sometimes you wish you could just execute a program in the searchpath and wait for it to finish.  This function will do that 
  	  | Code: |  	  | function LaunchCommandAndWait(command)
 local lpStartupInfo=createMemoryStream()
 local lpProcessInfo=createMemoryStream()
 local sisize
 local pisize
 local r
 
 local result
 
 if cheatEngineIs64Bit() then
 sisize=104
 pisize=24
 else
 sisize=68
 pisize=16
 end
 lpStartupInfo.writeDword(sisize)
 lpStartupInfo.Size=sisize
 lpProcessInfo.Size=pisize
 
 r=executeCodeLocalEx('CreateProcessA',0,command,0,0,0,0,0,0,lpStartupInfo.Memory,lpProcessInfo.Memory);
 
 if r~=0 then
 lpProcessInfo.Position=0
 local hProcess
 local hThread
 if cheatEngineIs64Bit() then
 hProcess=lpProcessInfo.readQword()
 hThread=lpProcessInfo.readQword()
 else
 hProcess=lpProcessInfo.readDword()
 hThread=lpProcessInfo.readDword()
 end
 
 r=executeCodeLocalEx('WaitForSingleObject', hProcess, 0xffffffff)
 local ExitCode=createMemoryStream()
 ExitCode.Size=4
 if executeCodeLocalEx('GetExitCodeProcess', hProcess, ExitCode.Memory)~=0 then
 result=ExitCode.readDword()
 end
 ExitCode.destroy()
 
 --cleanup handles
 executeCodeLocalEx('CloseHandle', hProcess)
 executeCodeLocalEx('CloseHandle', hThread)
 end
 
 lpProcessInfo.destroy()
 lpStartupInfo.destroy()
 
 return result
 end
 
 | 
 
 e.g:
 LaunchCommandAndWait('notepad.exe d:\\bla.txt')
 _________________
 
 Do not ask me about online cheats. I don't know any and wont help finding them.
 Like my help? Join me on Patreon so i can keep helping
 |  |