Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: codeliber en 18 Mayo 2010, 13:18 pm



Título: Pasar parametros entres dos ejecutable.
Publicado por: codeliber en 18 Mayo 2010, 13:18 pm
Hola gente, :)

Alguien me puede dar una idea sobre este asunto? a ver...  :)

Tengo dos ejecutable.
El ejecutable 1 con un ShellExecute(... ) llama al ejecutable 2. Cuando este ultimo (el ejecutable 2) termina su tarea, necesito que mande de vuelta un parametro al ejecutable 1, avisando así que ha terminado.

Realmente mio ojectivo es que el ejecutable 1 se entere "de alguna forma" que el ejecutable 2 ha terminado, y de paso a ver si es posible enviarle un parametro del 2 al 1, tambien.

El ejecutable 1 está en modo WIN32 GUI, y el ejecutable 2 en WIN32 Consola.

Una idea, porfa.. algo sencillo heeee?? No me lieis con DLL etc.. etc.. algo sencillito, porfa   :rolleyes:

Saludos.





Título: Re: Pasar parametros entres dos ejecutable.
Publicado por: bizco en 18 Mayo 2010, 13:20 pm
Busca informacion sobre sincronización entre procesos.


Título: Re: Pasar parametros entres dos ejecutable.
Publicado por: codeliber en 18 Mayo 2010, 15:25 pm
Gracias ctlon :)

lo he ido mirando. Y no se si estoy a tal altura de conocimientos.... :rolleyes:

Alguien anda por ahí con alguna otra idea sencilla sencilla... ???
Es que tampoco soy un "fiera" programando.. jajaja hago lo que puedo ;)


Saludos  :)




Título: Re: Pasar parametros entres dos ejecutable.
Publicado por: Eternal Idol en 18 Mayo 2010, 15:29 pm
La forma mas sencilla que se me ocurre ahora mismo es:

  • Usar ShellExecuteEx (con SEE_MASK_NOCLOSEPROCESS en fMask) asi en hProcess tenes el HANDLE al proceso creado (cuando cree uno claro).
  • Esperar el HANDLE con WaitForSingleObject e INFINITE, cuando retorne es que el proceso termino.
  • Obtener el valor de salida del proceso con GetExitCodeProcess.


Obviamente tenes que hacer un return valor; util en el 2do ejecutable.


PD. Usa la MSDN para buscar referencias.


Título: Re: Pasar parametros entres dos ejecutable.
Publicado por: codeliber en 18 Mayo 2010, 16:25 pm
Hay.. cuando se dicen las concomitancias de las ideas..  ;D

Encontré un code en el foro "ProcessCheck (char *szProcess)"  y lo he adaptado.  :silbar:
Lo mio es una chapuza peró "prometo" mirar, con más calma, tema WaitForSingleObject e INFINITE (siempre hay que ir a más)  :)

Dejo code de ejemplo como idea para otros.
1) No se pasan parametros peró por lo menos se  avisa que el proceso ha terminado.
2) Una idea sencilla para pasar pasar parametros: es un file en binario (o txt) de intercambio de informacion entre los dos ejecutables.  ;)

// *****************************************************************************
void    Esperameeeeeeee     (void)
{
 while( 1 ) {  Sleep( 25 ); if ( !ProcessCheck( "tc45i.exe" ) ) break; }
}
// *****************************************************************************
BOOL        ProcessCheck          (char *szProcess)
{
 HANDLE             hProcessSnap;
 HANDLE             hProcess;
 PROCESSENTRY32     pe32;
 
 
 hProcessSnap = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );
 pe32.dwSize = sizeof( PROCESSENTRY32 );
 if (!Process32First( hProcessSnap,&pe32 ) ) CloseHandle( hProcessSnap );
 do {
     if ( !strcmp( pe32.szExeFile, szProcess ) ) return TRUE;
    } while( Process32Next( hProcessSnap, &pe32 ) );
 CloseHandle( hProcessSnap );
 return FALSE;
}


Un gracias de nuevo a ctlon y a Eternal Idol.   ;-)

Saludos :)


Título: Re: Pasar parametros entres dos ejecutable.
Publicado por: MessageBoxA en 19 Mayo 2010, 04:50 am
hey que hay de nuevo... bueno al grano... pensaba en lo q dices y me vino la idea que si en estos casos tambien  ¿se pudiera utilizar tuberias y redireccionamiento?


Título: Re: Pasar parametros entres dos ejecutable.
Publicado por: Littlehorse en 20 Mayo 2010, 07:06 am
Si, se puede. En procesos relacionados y en el mismo host podes usar anonymous pipes. En procesos no relacionados y a través de una red podes usar named pipes. En ambos casos necesitas dos en caso que quieras transmitir información en ambas direcciones.
Para mas información busca sobre IPC.

Se vale no hacer doble post.

Saludos