¿Cómo recoger la salida de la función exec?

Started by panreyes, September 19, 2010, 01:52:39 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

panreyes

¿Hay alguna forma de hacerlo? ¿O de redirigir temporalmente la salida de la consola a una variable de alguna forma?

FreeYourMind

Siempre te pasas 4 pueblos preguntando cosas raras  ;D

SplinterGU

no por el momento directamente, tal vez con un script, pero eso deja de ser portable.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

panreyes

Al final esa será la solución supongo, no es tan mala después de todo.

El objetivo es recuperar el lenguaje de Windows, a través del registro, con un reg query...

SplinterGU

para eso te conviene sacar la salida a un archivo de texto y luego leerlo desde bennugd, asi hago en el instalador de la version windows.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DCelso

yo haría un módulo que exportar la función de reg query a bennu para así poderla usar fácilmente desde bennu. :D.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

panreyes

Pero me da problemas la parte de "> fichero.txt"
Por ahora me funciona con un bat, luego pongo cómo lo solucioné. Es interesante que se autodetecte el idioma :)

DCelso

#7
Pixel, te he creado un módulo especial para ello, lo malo es que es para linux :D, es que ahora no tengo ese odioso sistema operativo de pago a mano y no he podido compilar el código fuente en él, te dejo la fantástica tarea de que lo portes si quieres, :D.

http://forum.bennugd.org/index.php?topic=1651.0

NOTA: a lo mejor en windows no va el set_locale de "locale.h" y hay que usar el "GetLocaleInfo" de la API de windows,

http://msdn.microsoft.com/en-us/library/dd318101%28VS.85%29.aspx
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

josebita

Quizás esto del idioma se podría incorporar a la mod_sys. Creo que es un problema bastante común y no parece difícil de añadir.

panreyes

Aquí está una posible solución, tirando de exec:
http://www.windowsitpro.com/article/configuration/where-in-the-registry-is-the-language-setting-for-each-user-stored-.aspx

En BennuGD hago esto:
if(!fexists(getenv("TEMP")+"\lang.txt")) exec(1,"language.bat",0,0); end

Y language.bat contiene esto:
@rem recupera lenguaje de windows
@reg query HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Nls\Language /v Default | findstr Default > %TEMP%\lang.txt


Luego lo recupero y elijo el idioma dependiendo de lo que hayamos recogido, y en base a la lista que hay en el enlace de antes:

fp=fopen(getenv("TEMP")+"\lang.txt",O_READ);
if(fp)
cadena_lenguaje=fgets(fp);
fclose(fp);
end
cadena_lenguaje_bien=""+cadena_lenguaje[25]+cadena_lenguaje[26]+cadena_lenguaje[27]+cadena_lenguaje[28];
ops.lenguaje=0;
switch(cadena_lenguaje_bien)
case "0c0a": ops.lenguaje=1; end
case "0410": ops.lenguaje=2; end
case "0407": ops.lenguaje=3; end
case "040c": ops.lenguaje=4; end
end