![]() |
ejecutar programas DOS
Necesito ejcutar una sentencia DOS, desde el delphi ¿como lo hago?, en realidad lo que quiero hacer es empaquetar un archivo con winrar, como winrar tiene sentencias y parametros para dos no mas tengo que ejecutar una sentencia.
De antemano, gracias por su ayuda Artemisa:) |
Puedes mirarte la ayuda sobre Winexec.
Un Saludo. |
No encuentro ayuda de winexec en la ayuda del delphi, ¿donde la encuentro?, Aprovecho para preguntar donde encuentro ese programa la Base del Conocimiento del Delphi, gracias
|
Hola,
Cita:
|
No se si es esto lo que buscas.
No olviadr poner en Uses la unidad ShellApi. Saludos. |
ejemplo de ShellExecute
aqui un ejemplo:
unit mprotu; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ShellApi, ExtCtrls, jpeg; type TForm1 = class(TForm) Timer1: TTimer; Label1: TLabel; Label2: TLabel; procedure Timer1Timer(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; tot:byte; act,min:array[1..20] of byte; mins,coma:array[1..20] of string; strt1:string; arch:TextFile; implementation {$R *.dfm} procedure leer;var i:byte; Begin If FileExists('conft.txt') Then Begin AssignFile(arch,'conft.txt'); Reset(arch); Readln(arch,tot); for i:=1 to tot do Readln(arch,min [i],act [i]); for i:=1 to tot do Readln(arch,coma[i]); Closefile(arch); end Else Begin tot:=5; for i:=1 to tot do Begin min[i]:=i; act [i]:=1; End; for i:=1 to tot do coma[i]:='c:\agma29\dir2.bat c:\agma29\*.cli'; End; strt1:=':'; for i:=1 to tot do Begin str(min[i]:1,mins[i]);if min[i]<=9 then mins[i]:='0'+mins[i]; strt1:=strt1+'/'+mins[i]; End; form1.Label2.Caption:=strt1; End; procedure presen; var arch:textfile;lins2:byte; Begin if (lins2<80) then Form1.Label1.Font.Color:=ClTeal; if (lins2<45) then Form1.Label1.Font.Color:=ClGreen; if (lins2<20) then Form1.Label1.Font.Color:=ClOlive; if (lins2< 5) then Form1.Label1.Font.Color:=ClMaroon; End; procedure TForm1.Timer1Timer(Sender: TObject); var strt1,min2s,seg2s:string;i:byte; begin strt1:=TimeToStr(time); min2s:=copy(strt1,4,2); seg2s:=copy(strt1,7,2); form1.Caption:=strt1; {form1.Text:= label1.Caption; Form1.Hint:= label1.Caption;} if (min2s[2]='5') and (seg2s='00') Then form1.Refresh; if (min2s[2]='0') and (seg2s='00') Then presen; if (min2s='00') and (seg2s='00') Then leer; for i:=1 to tot do Begin if (min2s=mins[i]) and (seg2s='00') and (act[i]=1) Then Begin ShellExecute(Form1.Handle,nil,Pchar(coma[i]),'','',SW_SHOWNORMAL); End; End; end; procedure TForm1.FormCreate(Sender: TObject);var i:byte; begin Form1.Label1.Caption:=':.:'; TimeSeparator:=':'; LongTimeFormat := 'hh:nn:ss'; leer; end; end. refresca cada 10 minutos al minuto 5, es decir 5,15,25,35,45 y 55 if (min2s[2]='5') and (seg2s='00') Then form1.Refresh; Cambia de Fondo cada 10 Minutos al minuto 0, es decir 0,10,20,30,40y 50 if (min2s[2]='0') and (seg2s='00') Then presen; Actualiza (Vuelve a leer el archivo de configuracion a la hora exacta if (min2s='00') and (seg2s='00') Then leer; |
otra opción
Otra opción que tienes es utilizar la instrucción winexec, pero como la instrucción de Dos en este caso tiene paramétros y en lo particular a mí no me funciona bien cuando tengo que mandar parametros con winexec o shellexecute o no he encontrado la forma mas apropiada de hacerlo (si alguien me puede dar un ejemplo se lo agradeceria mucho), lo que me funciona es meter la instrucción de Dos en un archivo .bat y ejecutar el archivo .bat. un ejemplo es así:
procedure TForm1.Button1Click(Sender: TObject); begin winexec('c:\algo\autoexec2.bat',1); end; en el archivo .bat va la instrucción de dos por ejemplo: programa argumentos |
La franja horaria es GMT +2. Ahora son las 02:17:12. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi