Sábado 14 de Diciembre de 2024, 18:05
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Malloc Y El Shellexecute
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Malloc Y El Shellexecute (Leído 1526 veces)
DC740
Nuevo Miembro
Mensajes: 7
Malloc Y El Shellexecute
«
en:
Viernes 7 de Enero de 2005, 07:58 »
0
bueno mi problema es el siguiente, estaba modificando un programa para q compilara una aplicacion directamente desde el menu y mientras creaba un programa de prueba para mi funcion me encontre con este problema, antes habia probado el shellexecute y funcionaba bien, pero ahora, despues de asignarle la memoria dinamicamente a la variable del argumento, dejo de funcionarrr
#include <windows.h>
#include <stdio.h>
int main()
{
char *pargs;
int memoryalloc;
char archivo[6]; //esta es una variable de prueba
//en el programa original ya existe una variable q apunta al nombre completo
//del archivo abierto junto con el path
printf("nombre del archivo a compilar: \n",0);
gets(archivo);
/* calculo la memoria agregandole 14 q es lo q pesa el string q le sumo despues al argumento para hacer un argumento con varias cosas*/
memoryalloc=sizeof(archivo)+14;
pargs= (char *) malloc(memoryalloc); //asigno la memoria al string q contiene los argunmentos
strcpy(pargs,archivo);//copio el archivo al primer lugar del argumento
strcat(pargs," > report.txt");//copio el segundo argumento
/*
aca uso xsmos(un compilador)para compilar archivo, y supuestamente guardo la salida en report.txt pero no para nada y no funciona
*/
ShellExecute(NULL,"open","xsmos.exe /mos ",pargs,".\\",SW_SHOWNORMAL);
free(pargs);//libero memoria
return 0;//me fui
}
el programa compila bien, si falta algo o lo copie mal simplemente diganme q lo copio otra vez, espero q puedan ayudarme porke ya probe de todo y no se q hacer... muchas gracias
Tweet
DC740
Nuevo Miembro
Mensajes: 7
Re: Malloc Y El Shellexecute
«
Respuesta #1 en:
Viernes 7 de Enero de 2005, 18:01 »
0
estuve buscando y segui probando posibilidades, esta vez intente con el createprocess pero sigue sin funcionar, rekiere alguna condicion especial q yo no estoy contemplando? aca esta el codigo del nuevo programa, es exactamente lo mismo pero con el createprocess, encima estuve buscando mucho por la web, pero no logro encontrar nada, estare buscando mal??
#include <windows.h>
#include <stdio.h>
int main()
{
char *pargs;
int memoryalloc;
char archivo[6];
PROCESS_INFORMATION processInfo;
STARTUPINFO startupInfo;
startupInfo.cb = sizeof(startupInfo);
printf("nombre del archivo a compilar: \n",0);
gets(archivo);
memoryalloc=sizeof(archivo)+14;
pargs= (char *) malloc(memoryalloc);
strcpy(pargs,archivo);
strcat(pargs," > report.txt");
// ShellExecute(NULL,"open","xsmos.exe /mos ",(char *)pargs,".\\",SW_SHOWNORMAL);
CreateProcess(archivo, (char *)pargs,
NULL, // process security
NULL, // thread security
FALSE, // no inheritance
0, // no startup flags
NULL, // no special environment
NULL, // default startup directory
&startupInfo,
&processInfo);
free(pargs);
}
espero q puedan orientarme, desde ya, muchas gracias
DC740
Nuevo Miembro
Mensajes: 7
Re: Malloc Y El Shellexecute
«
Respuesta #2 en:
Sábado 8 de Enero de 2005, 05:41 »
0
encontre la solucion!!! parece q el shell execute y el create process lo q hacen es ejecutar de la siguiente forma
forma correcta:
ShellExecute(NULL, "open", "xsmos.exe", " /mos str.c", NULL, SW_SHOWDEFAULT);
forma incorrecta:
ShellExecute(NULL, "open", "xsmos.exe /mos ", "str.c", NULL, SW_SHOWDEFAULT);
cuando lee el nombre del ejecutable no lo hace como la funcion system q simplemente ejecuta eso, sino q diferencia los espacios, entonces no se pueden agregar NINGUN argumento incluido dentro de la parte del nombre del ejecutable, si o si es necesario oncluirlo en la parte de argunmentos, y los argumentos tambien tienen una condicion, el uso del famoso > para redireccionar no esta permitido!!! es decir q si yo pongo en los argumentos " /mos str.c > salida.txt", el programa q lo abra me va a decir "no se puede encontrar el archivo '>'" y tambien "no se puede encontrar el archivo 'salida.txt'" q es exactamente lo q me aparecio a mi despues de lograr ejecutar la aplicacion, bueno espero q les sirva mi experiencia, hasta la proxima y muchas gracias de todas formas
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Malloc Y El Shellexecute