Pues si comuneros, por aquí les traigo otro código espero les sea de provecho, saludos.
Lo primero es Agregar en el uses la unit ShellApi después creamos un procedure y este sería su código
procedure EjecutaApp(sAplicacion, sArgumentos: string; iVisible: integer); var seInfo: TShellExecuteInfo; pseInfo: PShellExecuteInfo; wTermina: DWord; begin pseInfo := @seInfo; With seInfo do begin cbSize := SizeOf(seInfo); fMask := SEE_MASK_NOCLOSEPROCESS; wnd := Handle; lpVerb := nil; lpFile := PChar(sAplicacion); lpParameters := Pchar(sArgumentos+#0); lpDirectory := nil; nShow := iVisible; hInstApp:=0; end; {Ejecutamos la aplicación solicitada} ShellExecuteEx(pseInfo); {RZD::Enero 25, 2006-> Aquí esperamos a que termine la aplicación que abrimos} repeat wTermina := WaitForSingleObject(seInfo.hProcess,500); Application.ProcessMessages; until (wTermina <> WAIT_TIMEOUT); end;
Para llamarlo sólo basta escribir esta línea:
EjecutaApp('c:\windows\notepad.exe','c:\archivo.txt',Sw_ShowNormal);
como siempre espero que les sea de utilidad y como lo dije, espero poder darme tiempo para subir todos los codes que tengo, saludos.
(pi)