Resultados 1 al 6 de 6

[duda]Ocultar ventana en C++

  1. #1 [duda]Ocultar ventana en C++ 
    Iniciado
    Fecha de ingreso
    Feb 2009
    Mensajes
    5
    Descargas
    0
    Uploads
    0
    ¡Buenas!

    Os expongo una duda a ver si alguno sabe como solucionar.

    Estoy creando una pequeña aplicación en C++ con mi "Borland C++ 5.02" que no deseo que abra ninguna ventana.
    La aplicación solo es para que escriba en un fichero los parámetros que se le pasan.
    Código:
    #include <stdio.h>
    #include <conio.h>
    
    int main (int argc, char *argv[]){
    	int cont;
    	FILE *fichero;
    	if(argc==1) return 1;
    	else{
    		if(!(fichero=fopen(argv[1],"ab"))) return 2;
    		else{
    			for(cont=2;cont<argc-1;cont++){
    				fputs(argv[cont],fichero);
    				fputs(" ",fichero);
    			}
    			fputs(argv[cont],fichero);
    			fputs("\r\n",fichero);
    			if(fclose(fichero)) return 3;
    		}
    	}
    }
    El problema esta en que cuando se ejecuta la aplicación por un instante se abre una ventana de CLI que me minimiza otra aplicación distinta que tengo a pantalla completa.

    Por cierto mis conocimientos de C++ son algo limitados.
    Si no se ha entendido mi duda dejar un comentario y tratare de expresarme de otra forma.
    Citar  
     

  2. #2  
    Moderador Global
    Fecha de ingreso
    Aug 2005
    Mensajes
    6.279
    Descargas
    7
    Uploads
    0
    El problema que tienes con la ventana no es de C++ en sí mismo, sino del sistema operativo y el gestor de ventanas que estás usando.

    Si yo ejecutase tu aplicación en mi sistema operativo (no incluiría conio.h ) no se me abriría ninguna ventana, porque en ningún momento la estás creando. Lo que debes averiguar es cómo se llama a ese binario en tu sistema operativo sin que se abra una ventana.

    Como sospecho de qué sistema se trata, cambio el hilo de sección.

    Salu2

    . . . . . . . . . . . . . . . . . . . .
    [[ NORMAS DEL FORO ]]
    . . . . . . . . . . . . . . . . . . . .
    __________
    Citar  
     

  3. #3  
    Iniciado
    Fecha de ingreso
    Feb 2009
    Mensajes
    5
    Descargas
    0
    Uploads
    0
    En efecto, se trata de windows. Concretamente Windows XP SP3.

    Como comentas la conio.h no hace falta. Fue un fallo que se me paso ya que en otros programas suelo usar la funcion "getch()" para incluir pausas.

    De todas formas mi duda aun sigue en pie. ¿Alguna sugerencia?
    Citar  
     

  4. #4  
    Moderador Global
    Fecha de ingreso
    Aug 2005
    Mensajes
    6.279
    Descargas
    7
    Uploads
    0
    Cita Iniciado por McArio Ver mensaje
    Como comentas la conio.h no hace falta. Fue un fallo que se me paso ya que en otros programas suelo usar la funcion "getch()" para incluir pausas.
    Puedes usar char *fgets(char *s, int tam, FILE *flujo); para eso, definida también en stdio.h

    Cita Iniciado por McArio Ver mensaje
    De todas formas mi duda aun sigue en pie. ¿Alguna sugerencia?
    Hace muy poquito se publicó un post en el que se daban sugerencias sobre cómo ejecutar un batch en modo oculto. Una de las sugerencias era convertirlo en un ejecutable. Yo no soy fan de ese sistema operativo, pero si tú ya tienes el binario... supongo que lo único que te resta es llamarlo directamente en vez de hacerlo a través de una "terminal".

    De todas formas, mejor espera a que alguien más entendido que yo en ese sistema te pueda orientar al respecto.

    Salu2 !

    . . . . . . . . . . . . . . . . . . . .
    [[ NORMAS DEL FORO ]]
    . . . . . . . . . . . . . . . . . . . .
    __________
    Citar  
     

  5. #5  
    Moderador HH
    Fecha de ingreso
    Sep 2003
    Mensajes
    1.384
    Descargas
    21
    Uploads
    5
    Hola McArio, tu aplicacion abre la ventana a la que te referis por que esta hecha para ejecutarse en consola. Una posibilidad seria hacer la aplicacion con winmain().

    Otra cosa que creo que se puede hacer, es cambiar la forma de ejecucion del programa en las propiedades, y hacer que se ejecute minimizado. De esta forma se mostrara el icono en la barra de tareas, pero no se vera la ventana.


    Saludos
    - Me desagrada
    - ¿Por qué?
    - No estoy a su altura.
    ¿Ha respondido así alguna vez un hombre?

    Friedrich Nietzsche



    Citar  
     

  6. #6  
    Moderador Global Avatar de hystd
    Fecha de ingreso
    Jul 2005
    Ubicación
    1, 11, 21, 1211...
    Mensajes
    1.596
    Descargas
    58
    Uploads
    0
    Prueba con:

    Código:
    #include <stdio.h>
    #include <conio.h>
    #include <windows.h>
    
    int main (int argc, char *argv[]){
            FreeConsole();
    	int cont;
    	FILE *fichero;
    	if(argc==1) return 1;
    	else{
    		if(!(fichero=fopen(argv[1],"ab"))) return 2;
    		else{
    			for(cont=2;cont<argc-1;cont++){
    				fputs(argv[cont],fichero);
    				fputs(" ",fichero);
    			}
    			fputs(argv[cont],fichero);
    			fputs("\r\n",fichero);
    			if(fclose(fichero)) return 3;
    		}
    	}
    }
    Si no te va como quieres, la forma correcta de conseguirlo es indicándole al compilador que no muestre la consola. Esto depende del entorno que estés utilizando para programar en C. Por ejemplo en Visual Studio bastaría con quitar la directiva _CONSOLE.

    Un saludo.
    El optimista tiene ideas, el pesimista... excusas

    Citar  
     

Temas similares

  1. Capturar texto de ventana
    Por biyonder en el foro GENERAL
    Respuestas: 2
    Último mensaje: 02-10-2009, 17:11
  2. Respuestas: 3
    Último mensaje: 09-12-2008, 15:24
  3. Abrir en la misma ventana
    Por fedderico10 en el foro WINDOWS
    Respuestas: 3
    Último mensaje: 30-01-2006, 15:02
  4. Puedo modificar ventana de Outlook?
    Por elfo07 en el foro GENERAL
    Respuestas: 7
    Último mensaje: 07-12-2005, 19:17
  5. Cerrar ventana de BAT
    Por twilight en el foro GENERAL
    Respuestas: 1
    Último mensaje: 16-05-2003, 11:21

Marcadores

Marcadores