• Martes 16 de Abril de 2024, 16:02

Autor Tema:  Abrir Consola De Dos Desde Aplicasion Grafica  (Leído 3545 veces)

maikmr

  • Miembro MUY activo
  • ***
  • Mensajes: 112
    • Ver Perfil
Abrir Consola De Dos Desde Aplicasion Grafica
« en: Miércoles 24 de Agosto de 2005, 17:26 »
0
Hola compañeros del foro nesesito saber si alguien si alguien sabe como abrir desde una aplicacion grafica una consola del DOS para mandar a imprimir un mensaje cualquiera desde mi aplicasion grafica. por cierto estoy usando Visual C++.
gracias!!

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Abrir Consola De Dos Desde Aplicasion Grafica
« Respuesta #1 en: Miércoles 24 de Agosto de 2005, 17:29 »
0
Tenes que usar AllocConsole para abrir la consola. Con GetStdHandle conseguis stdin y stdout que despues podes usar con WriteFile y ReadFile.

 :devil:

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

maikmr

  • Miembro MUY activo
  • ***
  • Mensajes: 112
    • Ver Perfil
Re: Abrir Consola De Dos Desde Aplicasion Grafica
« Respuesta #2 en: Miércoles 24 de Agosto de 2005, 17:59 »
0
Me podria dar un ejemplo de la sintaxis para usar el AllocConsole.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Abrir Consola De Dos Desde Aplicasion Grafica
« Respuesta #3 en: Miércoles 24 de Agosto de 2005, 18:01 »
0
Este es el prototipo:
BOOL AllocConsole(void);

La podes llamar asi de facil:
AllocConsole();

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

maikmr

  • Miembro MUY activo
  • ***
  • Mensajes: 112
    • Ver Perfil
Re: Abrir Consola De Dos Desde Aplicasion Grafica
« Respuesta #4 en: Miércoles 24 de Agosto de 2005, 18:12 »
0
No hay que hacer inclusion de alguna Librery en paraticular para el uso de esta funcion?

y otra cosa
Declaro e prototipo de la funcion deacurdo.
BOOL AllocConsole(void);

luego la invoco, muy bien.
AllocConsole();

Pero si quisiera manda a imprimir en esa consola que abri un mensaje como por ejemplo:

Hola mundo!
sera valido algo como esto?
[CODE]
BOOL AllocConsole(void){
cout << "Hola mundo" << "\n"
}
[CODE]

O la funcion ya esta definida?

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Abrir Consola De Dos Desde Aplicasion Grafica
« Respuesta #5 en: Miércoles 24 de Agosto de 2005, 18:17 »
0
Cita de: "maikmr"
No hay que hacer inclusion de alguna Librery en paraticular para el uso de esta funcion?

y otra cosa
Declaro e prototipo de la funcion deacurdo.
BOOL AllocConsole(void);

luego la invoco, muy bien.
AllocConsole();

Pero si quisiera manda a imprimir en esa consola que abri un mensaje como por ejemplo:

Hola mundo!
sera valido algo como esto?
[CODE]
BOOL AllocConsole(void){
cout << "Hola mundo" << "\n"
}
[CODE]

O la funcion ya esta definida?
La funcion ya esta definida en Wincon.h que esta incluido en Windows.h pero igual este codigo esta muy mal:

[code]
BOOL AllocConsole(void){
cout << "Hola mundo" << "\n"
}
[/code]

No podes redefinir la funcion y menos para ponerle ese codigo, como te decia antes para poder usar esa consola tenes que llamar a GetStdHandle y despues a ReadFile y WriteFile.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

maikmr

  • Miembro MUY activo
  • ***
  • Mensajes: 112
    • Ver Perfil
Re: Abrir Consola De Dos Desde Aplicasion Grafica
« Respuesta #6 en: Miércoles 24 de Agosto de 2005, 18:27 »
0
No es que pretenda ser majadero todo lo contrario le agradesco por tomarce la molestia.

Pero entonces como le desia antes si quiero mandar a imprimir un mesaje cualquiera desde mi aplicasion a esa consola que abri, me dice que use las instrucciones GetStdHandle y despues a ReadFile y WriteFile. Pero cual serian la sintaxis con estas sentencias?

BOOL AllocConsole(void);

AllocConsole();

???????????????.
nuevamente grasias y disculpe la molestia!!!

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Abrir Consola De Dos Desde Aplicasion Grafica
« Respuesta #7 en: Miércoles 24 de Agosto de 2005, 18:34 »
0
Código: Text
  1.  
  2. AllocConsole();
  3. HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
  4. DWORD ret = 0;
  5. char str[] = &#34;hola mundo&#34;;
  6. WriteFile(hOut, str, strlen(str), &ret, 0);
  7.  
  8.  

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

maikmr

  • Miembro MUY activo
  • ***
  • Mensajes: 112
    • Ver Perfil
Re: Abrir Consola De Dos Desde Aplicasion Grafica
« Respuesta #8 en: Miércoles 24 de Agosto de 2005, 22:39 »
0
Ey compa;ero! quiero agradeserle por su colaboracion ahora solo queria saber si no sabe como puedo hacer para controlar la consola porque cuando cierro la consola se me cierra toda la aplicasion!! y necesito evitar eso!!

nuevamente gracias

pililo

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Abrir Consola De Dos Desde Aplicasion Grafica
« Respuesta #9 en: Sábado 25 de Junio de 2011, 13:20 »
0
Yo utilizo vc++ 2008 express, y me ha funcionado con lo siguiente:
Código: C++
  1.  
  2.  
  3. using namespace std;
  4. #using <system.dll>
  5. using namespace System::Diagnostics;
  6. using namespace System;
  7.  
  8.  

Luego, más adelante:
Código: C++
  1.  
  2. Console::Write("prueba de consola");
  3.  
  4.  

Antes, he tenido que abrir una consola con :

Código: C++
  1.  
  2. Alloconsole();
  3.  
  4.