1
« en: Miércoles 19 de Marzo de 2008, 00:03 »
Hola, estoy intentando cargar y ejecutar archivos .COM desde otro programa, SIN utilizar el EXEC explicitamente, solo llamadas al sistema de DOS ( Funcion INTDOS).
El problema es cuando trato de enviar un BLOQUE DE PARAMETROS para pasarle parametros al .COM que se ejecutará.
Ejemplo: c:\ejecutar archivo_com [parametros]
Este es el codigo pero se queda sin responder:
// ejecutar.c
#include <stdio.h>
#include <dos.h>
#include <stdlib.h>
#include <sys\types.h>
int main(int argc, char near *argv[ ])
{
int len, i, j, retorna, tam;
union REGS registros;
char f1[20] = "0000000000000000000\0"; // FCB1 en blanco
char f2[20] = "0000000000000000000\0";
// bloque de parametros para pasar al BX
struct parametros {
short int segmento;
char* lineacomando;
char* fcb1;
char* fcb2;
} par;
char *cmd; // linea de comando
cmd[0] = (char) strlen(argv[2]);
strcpy(&cmd[1],argv[2]);
strcat(&cmd[1],"\0");
// estableciendo el bloque de parametros
par.segmento = 0;
par.lineacomando = cmd;
par.fcb1 = f1;
par.fcb2 = f2;
registros.h.ah = 0x4b;
registros.h.al = 0x00;
registros.x.dx = (unsigned) argv[1];
registros.x.bx = (unsigned int) ∥
retorna = intdos(®istros, ®istros);
if (!(registros.x.cflag ? retorna : 0))
{ printf("CARRY FLAG IS CLEAR\n"); };
printf("Comando terminado: %s", argv[2]);
return 0;
}