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)
-   -   Añadir parametros en cmd.exe y no funcionan... (https://www.clubdelphi.com/foros/showthread.php?t=83371)

kookybyte 11-06-2013 03:08:58

Añadir parametros en cmd.exe y no funcionan...
 
Hola a todos, soy nuevo en esto de la programacion y me he quedado atascado.
quiero que mi programa cuando presione el boton Button3 me abra cmd.exe con una linea de comandos determinada para ejecutar un programa en ms-dos. El cmd.exe me lo abre pero no consigo que me ejecute la linea de comandos, he probado de varias formas googleando pero no hay manera, ahora mismo tengo este codigo fuente del boton

Código Delphi [-]

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  ExtCtrls, Menus, Process, Windows;   
var
 Vdg: String;
 UnProceso: TProcess;

procedure TForm1.Button3Click(Sender: TObject);
begin
   Vdg:=GetCurrentDir + '\tools\programa.exe';
   UnProceso := TProcess.Create(nil);
   UnProceso.Executable := 'c:\windows\system32\cmd.exe';
   UnProceso.parameters.Add(Vdg);
   UnProceso.parameters.Add(-h);
   UnProceso.Options := UnProceso.Options + [poWaitOnExit];
   UnProceso.Execute;
   UnProceso.Free;
   end;

con esto consigo abrir la consola pero me aparece con la ruta de donde tengo el ejecutable, no consigo que añada la variable "Vdg". la variable lleva la ruta correcta porque con un showmessage(vdgindex) me muestra la ruta correcta. Hay mas partes de codigo pero no veo necesario ponerlas aqui porque creo que no afectan.
He provado con

Código Delphi [-]
Unproceso.Commandline :=  'c:\windows\system32\cmd.exe ' + .....

pero tampoco hace nada, solo abre el cmd.exe pero no añade la linea de comandos necesaria para abrir el programa.exe.
Si cambio el cmd.exe por programa.exe se me abre este pero en formato windows, no en forma de msdos, que es como lo necesito para poder añadir el parametro -h
Tambien he probado ShellExecute y nada...¿alguien sabe que falla?

WkaymQ48 11-06-2013 10:03:05

Para pesarle un comando al cmd tienes que utilizar el parámetro "/c" es decir:
Código:

cmd.exe /c tuprograma.exe tusparametros
Y con "/k" haces lo mismo pero la ventana del cmd no se cierra al terminar:
Código:

cmd.exe /k tuprograma.exe tusparametros

Casimiro Notevi 11-06-2013 10:26:45

Cita:

Empezado por kookybyte (Mensaje 462035)
Hola a todos

Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración :)

Recuerda poner los tags al código fuente, ejemplo:



Gracias :)

kookybyte 11-06-2013 10:34:54

perdona Casimiro, el proximo post pondre el tag que se me ha olvidado...

y WkaymQ48, muchas gracias, me ha servido, ahora con esta linea me funciona :)

Código Delphi [-]
UnProceso.Parameters.Add('start "" /c ' + Vdg + ' -h -hide -exit');

Casimiro Notevi 11-06-2013 10:39:50

Es normal, eres nuevo :)
¡Gracias!


La franja horaria es GMT +2. Ahora son las 21:27:23.

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