Tema: shellexecute
Ver Mensaje Individual
  #3  
Antiguo 17-04-2004
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Reputación: 10
marcoszorrilla Va por buen camino
Mira esta idea también:

Código:
implementation

{$R *.DFM}

function WinExecAndWait32(FileName:String; Visibility : integer):integer;
var
zAppName:array[0..512] of char;
StartupInfo:TStartupInfo;
ProcessInfo:TProcessInformation;
begin
StrPCopy(zAppName,FileName);
FillChar(StartupInfo,Sizeof(StartupInfo),#0);
StartupInfo.cb := Sizeof(StartupInfo);
StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow := Visibility;

  if not CreateProcess(nil,zAppName,nil,
nil,false,CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS,nil,nil,
StartupInfo, ProcessInfo) then
  Result := -1
  else
  begin
  WaitforSingleObject(ProcessInfo.hProcess,INFINITE);
  GetExitCodeProcess(ProcessInfo.hProcess,DWORD(Result));
  CloseHandle( ProcessInfo.hProcess );
  CloseHandle( ProcessInfo.hThread );
  end;
end;

procedure ExecuteDOSCommand( cmdline, logfile: String; hidden: Boolean );
const
flags : Array [Boolean] of Integer = (SW_SHOWNORMAL, SW_HIDE);
var
cmdbuffer: Array [0..MAX_PATH] of Char;
cmd: String;
begin
GetEnvironmentVariable( 'COMSPEC', cmdBUffer, Sizeof(cmdBuffer));
cmd := cmdbuffer + ' /C ' + cmdline + ' > ' + logfile;
WinExecAndWait32( cmd, flags[hidden] );
end;

procedure TForm1.Button1Click(Sender: TObject);
const
logfile = 'C:\Dos\output.out';
begin
ExecuteDOSCommand( 'dir c:\', logfile , true );
richedit1.lines.loadfromfile( logfile );
end;
Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.

Última edición por marcoszorrilla fecha: 17-04-2004 a las 12:51:44.
Responder Con Cita