Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   shellexecute (https://www.clubdelphi.com/foros/showthread.php?t=9215)

sarga 17-04-2004 04:16:14

shellexecute
 
hola....

Logre ejecutar un comando del DOS con la instrucción, gracias:

winexec(pchar('command.com /cipconfig.exe'),sw_shownormal);

pero la ventana del DOS desaparece y no deja leer la informacion como hago para que quede alli y se pueda leer.

Ademas necesito copiar la informacion que aparece en la ventana del DOS AL EJECUTAR CADA COMANDO, para pegarla en un MEMO dentro de un formulario de delphi Y MOSTRARLA EN ESE FORM.


Gracias por toda la ayuda dada hasta el momento, espero que me colaboren con esta nueva inquietud

GRACIAS.....ADIOS...

roman 17-04-2004 06:21:28

Echale un vistazo a http://www.delphi3000.com/articles/article_2112.asp

Quizá tengas que registrarte para leer el artículo pero me parece que es gratuito. Tiene una función:

function GetDosOutput(const CommandLine: String): String;

a la que le pasas el comando que deseas ejecutar y te devuelve la salida y sin siquiera mostrarte la ventana de ms-dos. A mi me parece que sería lo ideal para lo que quieres pues pones directamente la salida en un memo:

Código:

Memo1.Text := GetDosOutput('c:\winnt\system32\ipconfig.exe');
y ¡listo!

marcoszorrilla 17-04-2004 12:47:26

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.


La franja horaria es GMT +2. Ahora son las 22:32:25.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi