Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ejecucion en DOS (https://www.clubdelphi.com/foros/showthread.php?t=29600)

nazly 26-01-2006 17:54:43

ejecucion en DOS
 
Buena tarde.
Alguien me puede ayudar , necesito ejecutar un comando en D.O.S
por ejemplo : ping kronos

Gracias

Neftali [Germán.Estévez] 26-01-2006 18:16:58

Código Delphi [-]
uses
  ShellAPI;

...

  ShellExecute(Handle, '', 'ping', PChar(' Kronos'), nil, SW_SHOW);

delphi.com.ar 26-01-2006 19:02:53

Solo una cuestión semántica :D Ejecutar comandos del DOS?


PD: Para tu ejemplo, yo utilizaría WinExec!

nazly 26-01-2006 19:10:15

Gracias funciona muy bien.

Nazly

nazly 27-01-2006 15:07:17

help...:confused: Necesito ahora que la ventana del DOS permanezca algunos segundos abierta para poder ver la ejecución del comando; se cierra muy rápido, he utilizado el timer pero no me funciona.
Ademas que si algún servidor no hace el ping poder tomar la respuesta para generar un mensaje..

Gracias

delphi.com.ar 27-01-2006 15:27:48

Lo que podes hacer es alocar una consola, ejecutar tu aplicación de DOS, y vos decidir cuando cerrar la consola:
Código Delphi [-]
var
  StartInfo: STARTUPINFO;
  ProccesInfo: PROCESS_INFORMATION;
  ExitCode: DWORD;
begin
  AllocConsole;
  try
    ZeroMemory(@StartInfo, SizeOf(STARTUPINFO));
    StartInfo.cb := SizeOf(STARTUPINFO);

    Win32Check(CreateProcess(nil, 'ping 127.0.0.1', nil, nil, FALSE, 
                               CREATE_SEPARATE_WOW_VDM, nil, nil, StartInfo, ProccesInfo));
    WaitForSingleObject(ProccesInfo.hProcess, INFINITE);

    Sleep(3000); { La espera... }
  finally
    FreeConsole;
  end;

Saludos!

AzidRain 27-01-2006 17:34:43

Si lo que quieres es hacer un Ping para ver si un servidor x está en línea mejor utiliza el componente TIDcmpClient de las Indy, que precisamente hace eso: un ping.

Yo lo hice con esta Función:
Código Delphi [-]
 
function TFConfig.ServerIsUp(aserver:String):Boolean;
var Pinger: TIDcmpClient
Begin
  Pinger:= TIDcmpClient(nil);
  Try
    Pinger.Host := aserver;
    Pinger.Ping;
    ServerIsUp := Pinger.ReplyStatus.BytesReceived <> 0;
  finally
    Pinger.Free;
  end;
end;

Saludos


La franja horaria es GMT +2. Ahora son las 04:25:20.

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