RE:Necesito poder ejecutar exe desde Turbo pascal
Saludos Sergio.
ahí va una posible solución , no creo que sea la mas conveniente , lo ideal seria que te actualizes a TP7 o a FREE Pascal , este ultimo como su nombre indica es FREE (en caso de crear algo comercial no debes pagar ningun royaltye ademas de ser compatible con TP7 de borland le supera en muchos campos , uso de memoria de hasta 4 gb etc, etc etc etc).
ahí va la posible solucion , se trata de usar una funcion del bios que simula una pulsacion real de teclado , si esta forma de introducir datos tampoco fuera soportada desde TP3 usa ASM o introduce el code mediante INLINE - lo soportan todas las versiones de borland -(pero tendrás que traducirlo). espero que te sea util aunque no se el porqué de ese capricho TP3.
____________ SALUDOS a todos. ____________________________
{ pulsa_cadena_bios envia la cadena al buffer del teclado BIOS y abandona el}
{ el programa para que surta efecto. el efecto es el mismo que si estuviera-}
{ mos en el DOS y pulsasemos la cadena mas INTRO ejecutandose la cadena como}
{ si de un programa se tratase si la cadena tuviese sentido .La unica pega }
{ es que solo podremos utilizar una cadena de (16 caracteres)-1=15,el carac-}
{ ter INTRO se introduce automaticamente al final de la cadena, aunque el }
{ espacio esta limitado es suficiente para ejecutar en el peor de los casos }
{ un comando sin parametros o mejor aun ejecutar un archivo.BAT que este si }
{ que puede enviar parametros o ejecutar varios comandos o archivos sin nin-}
{ g£n problema teniendo la ventaja sobre un shell de que este metodo no }
{ precisa tanta MEMORIA ya que el programa se termina justo antes de llenar }
{ el buffer del teclado }
{ NOTA: *** MAXIMO 15 CARACTERES *** }
{...........................................................................}
{RENOTA: un procedimiento dentro de otro es un subprocedimiento de uso local
solo accesible desde este ultimo -pero el acceso en velocidad muchisimo mas rapido -no se si lo soporta TP3 , si es así , extraelo como procedimiento normal}
procedure pulsa_cadena_bios(cad:string);
var longi:byte;
cnt:byte;
procedure pulsa_tecla(cad:char);
var regs:Tregisters;
begin
regs.ah:=$05;
regs.al:=0;
regs.cl:=ord(cad);
intr($16,regs);
end;
begin
cad:=cad+#13;
longi:=length(cad);
if longi >16 then exit;
for cnt:=1 to longi do pulsa_tecla(cad[cnt]);
halt;
end;
{...........................................................................}