PDA

Ver la Versión Completa : hacer que un exe reciba parametros externos


carlosmoralesm
06-01-2005, 01:17:58
como puedo hacer que un exe reciba parametros externos
esto es que cuando lo llamo me pide escribir el parametro
pero quiero que funcione de la siguiente forma

myprogram.exe /1 /4,017,16

o

myprogram.exe -1 -4,017,16

esto es para pasarle directo los parametros y no utilizar el
comando scanf

#include <time.h>
#include <stdio.h>
#include <string.h>
#include <windows.h>
#include "MyBlasterUtil.h"
#define MAX_TOKEN_LEN 128
char blaststr[20000];
void main (int argc, char**argv)
{

int devNum;
char keyName[MAX_TOKEN_LEN];
unsignedchar outstr[1024];
char hexstr[1024];
char charstr[10];
unsignedint i, j;
int size;
printf("Version 1.0\n");
printf("Type in 1 for code library keys or 0 to learn\n");
scanf("%d", &devNum);
if (devNum)
{
while(1) {

printf("UEI type values are:\n0=TV, 1=Cable, 2=Video Accessory, 3=Satellite, 4=VCR, 5=Laser Disk,\n6=DVD, 7=Tuner/Amp, 8=Amp/Misc. Audio, 9=CD, 10=Home Control\n");

printf("There are thousands of UEI code values representing different manufacturers.\nConsult mytvstore.com/support.html for a list of them\n");printf("UEI key values vary by device\n");
printf("As an example, the sequence 4,162,16 represents VCR,Panasonic,POWER.\n");
printf("Input \'ueitype,ueicode,key,key...\'\n");
scanf("%s", keyName);
printf("\n");
Emit(keyName);
}

return;

}
else
{
for (j=0; j<3; j++)
{
printf("press and hold custom key to learn (5 seconds)\n");
if (LearnDeviceKey(&size, outstr, j+1) == 0) {
printf("outstr=");
hexstr[0] = '\0';
for (i=0; i<(unsignedint)size; i++)
{
sprintf(charstr, "%.2X", outstr[i]);
printf(charstr);strcat(hexstr, charstr);
}
printf("\n");
}
while (1)
{
printf("type next to record the next key or any other word to output the last learned key\n");
scanf("%s", keyName);
if (!stricmp(keyName, "NEXT")) break;
EmitLearned(hexstr);
}
}
return;
}
}


Gracias de Antemano

Carlosmm

barman
07-01-2005, 12:18:53
Joder, que codigo mas viejo.

¿No trabajas con herramientas rad?, ¿No tienes el c++ builder?.

El main (arg.....) se usaba en programas MS-DOS, en el cual el bloque central era el main, (actualmente se puede hacer asi, sin embargo)
Borland c++ proporciona una clase ya encapsulada para ello,

En el el constructor de tu formulario principal.
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
ParamCount(); // numero de paramentros de entrada
ParamStr(1); // primer paramentro
ParamStr(2).c_str(); //etc
ParamStr(2); //etc


}

carlosmoralesm
07-01-2005, 19:13:36
Gracias por tu ayuda

La verdad No entendi, Tengo Muy poca experiencia en el lenguaje C y no capto la idea que me das te agradeceria infinitamente si me explicaras un poco mas como puedo transformar este programa a una forma mas actualizada o simplemente como hacer el cambio en el programa para que reciba los parametros


Gracias Nuevamente

PD. estoy estudiando el lenguaje en estos momentos si de favor tienes alguna referencia de donde pueda encontrar un ejemplo de lo que quiero hacer para tener mejor referencia..

Carlos Morales

barman
13-01-2005, 12:33:16
Vale que es la sengunda vez que respondo, (espero que no se vuelva a romper la conexion).
La otra vez era un post largo sobre las diferencias entre c y c++.

Lenguaje c: Origen de todas las cosas.

Lenguaje C++: Basado en lenguaje c pero con metodos de encasulapcion, herecias, etc.

¿Para apender c++ tienes que saber c ?, esa es la gran pregunta.

Tu codigo esta en c, yo uso c++ (aunque aprendi programando c).

Y ya ta.

OSKR
05-02-2005, 20:25:07
Sin necesidad de cambiar a la plataforma de 32 bits, puedes obtener de la info del prompt del sistema con el argc que te dice cuantos parametros te han enviado y el argv es un vector de cadenas que contiene los paràmetros en el orden en que fueron enviados