Enlever la croix quitter du cmd via le langage c

Résolu/Fermé
mariusvn Messages postés 11 Date d'inscription mercredi 3 avril 2013 Statut Membre Dernière intervention 6 avril 2013 - 3 avril 2013 à 23:11
mariusvn Messages postés 11 Date d'inscription mercredi 3 avril 2013 Statut Membre Dernière intervention 6 avril 2013 - 6 avril 2013 à 17:53
bonjour j'aimerai pouvoir enlever la croix du cmd via le c ou le c++ (je les contrôles bien)
il ne faut pas oublier que j'execute un batch avec le c qui ouvre lui même le cmd
voici mon codage :
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
     system ("c:\\\"Documents and Settings\"\\Marius\\Desktop\\error\\matrix.bat");
    return 0;
}

serait-ce possible de modifier ce fichier pour arriver a ma solution?
merci d'avence!
A voir également:

3 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 841
4 avril 2013 à 21:58
Impossible de manière standard. Ce n'est pas le C qui gère l'affichage de la fenêtre MS-DOS mais l'OS. Il faut donc que tu vois en amont.
Ou alors, il faut passer par une application graphique C (plus compliqué).
Sinon pour info, si ton programme se résume à appeler un .bat, il y a des outils plus adaptés que le C. Pourquoi faire du C ?
0
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092
Modifié par [Dal] le 5/04/2013 à 11:00
Salut mariusvn,

Comme fiddy l'a indiqué, en C standard, tu ne peux pas influer sur la console.

Cependant, puisque tu es sous Windows, tu peux utiliser les API Windows pour paramétrer la console.

La fonction SetConsoleDisplayMode permet, par exemple, de forcer l'affichage d'une console en plein écran (il n'y a donc pas de "croix du cmd", puisqu'il n'y a même pas de fenêtre).

Elle est décrite ici :

https://docs.microsoft.com/en-us/windows/console/setconsoledisplaymode?redirectedfrom=MSDN

Comme l'indique cette documentation, la fonction est incluse dans kernel32.dll.

Si tu utilises un environnement de programmation MinGW, tu peux faire cela pour charger dynamiquement cette dll dans ton programme, et faire usage de cette API :

#include <stdio.h> 
#include <stdlib.h> 
#include <windows.h> 

/* 
 * Exemple de code Windows pour un programme console compilé avec MinGW 
 * permettant l'affichage de la console en plein écran 
 */ 

#define CONSOLE_FULLSCREEN_MODE 1 
typedef BOOL (WINAPI *SetConsoleDisplayModeProc)(HANDLE, DWORD, PCOORD); 

int main(void) 
{ 

    HMODULE dll; 
    COORD coord; 

    /* on charge kernel32.dll */ 
    if (!(dll = LoadLibrary("kernel32.dll"))) 
    { 
        printf("Erreur : impossible de charger kernel32.dll"); 
        system("PAUSE"); 
        exit(EXIT_FAILURE); 
    } 
    SetConsoleDisplayModeProc SetConsoleDisplayMode = 
            (SetConsoleDisplayModeProc) GetProcAddress(dll, 
                    "SetConsoleDisplayMode"); 

    /* on obtient un handle sur la console */ 
    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); 
    if (hConsole == NULL || hConsole == INVALID_HANDLE_VALUE) 
    { 
        printf("Erreur : impossible d'obtenir" 
                "un handle sur la console"); 
        system("PAUSE"); 
        FreeLibrary(dll); 
        exit(EXIT_FAILURE); 
    } 

    /* on appelle l'API Windows SetConsoleDisplayMode */ 
    if (!SetConsoleDisplayMode(hConsole,  
            CONSOLE_FULLSCREEN_MODE, &coord)) 
    { 
        printf("Erreur : impossible de mettre " 
                "la console en mode plein écran"); 
        system("PAUSE"); 
        FreeLibrary(dll); 
        exit(EXIT_FAILURE); 
    } 

    printf("Bonjour, je suis en plein écran :-)\n"); 
    system("PAUSE"); 

    /* on libère kernel32.dll */ 
    FreeLibrary(dll); 
    return 0; 
}

Dal
0
mariusvn Messages postés 11 Date d'inscription mercredi 3 avril 2013 Statut Membre Dernière intervention 6 avril 2013 3
6 avril 2013 à 17:53
merci pour l'info :)
0