Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    90

    [C++] Massimizzare finestra prompt dei comandi

    Ho fatto qualche ricerca ma non ve n'è la minima traccia.
    Non mi è strettamente necessaria, ma era una curiosità...

    Vorrei massimizzare la finestra del prompt dei comandi di un programma C++. CHe ne dite?

  2. #2
    Sicuramente non c'è una via multipiattaforma, forse usando qualche trucco strano ce la puoi fare su Windows, molto difficilmente su Linux (anche trovassi un trucco strano che va con un emulatore di terminale, molto probabilmente non andrebbe con gli altri).

    Tieni conto comunque che è "concettualmente" sbagliata come azione da parte di una applicazione console, che di base dovrebbe starsene confinata nella console ad essa assegnata e non cercare di fare cose strane all'esterno. Se iniziano a servire questo genere di finezze, forse è il caso di passare ad un'applicazione GUI.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    90
    Come ho detto era solo una curiosità... Non me ne faccio assolutamente nulla...

  4. #4
    Originariamente inviato da MItaly
    Sicuramente non c'è una via multipiattaforma, forse usando qualche trucco strano ce la puoi fare su Windows, molto difficilmente su Linux (anche trovassi un trucco strano che va con un emulatore di terminale, molto probabilmente non andrebbe con gli altri).

    Tieni conto comunque che è "concettualmente" sbagliata come azione da parte di una applicazione console, che di base dovrebbe starsene confinata nella console ad essa assegnata e non cercare di fare cose strane all'esterno. Se iniziano a servire questo genere di finezze, forse è il caso di passare ad un'applicazione GUI.
    Concordio in pieno..


    In realtà per Windows esistono dei trucchetti più o meno efficaci:

    1. simulare la pressione di ALT+ENTER
    codice:
        keybd_event(VK_MENU, 0x38,0,0);
        keybd_event(VK_RETURN,0x1c,0,0);    
        keybd_event(VK_RETURN,0x1c,KEYEVENTF_KEYUP,0);    
        keybd_event(VK_MENU,0x38,KEYEVENTF_KEYUP,0);
    tuttavia non è supportato in Windows Vista.

    2. uso dell'API SetConsoleDisplayMode


    Se sei veramente interessato ti posso scrivere anche il codice del 2° esempio.



    Ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    90
    Se non ti crea disturbo va bene... Grazie!

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    487

    mmm

    Io so che con le versioni dei common control 6.0 (windows vista e windows 7), windows non supporta la modalità schermo intero per il prompt...

  7. #7

    Re: mmm

    Originariamente inviato da kirakira93
    Io so che con le versioni dei common control 6.0 (windows vista e windows 7), windows non supporta la modalità schermo intero per il prompt...
    Hai ragione, come ho già specificato nel mio precedente post..

    Per rispondere alla richiesta di m4l13n scrivo il codice che sfrutta la funzione API SetConsoleDisplayMode :
    codice:
      
    BOOL NT_SetConsoleDisplayMode(HANDLE hOutputHandle, DWORD dwNewMode)  
    {  
    typedef BOOL (WINAPI *SCDMProc_t) (HANDLE, DWORD, LPDWORD);  
    
    SCDMProc_t SetConsoleDisplayMode;  
    HMODULE hKernel32;  
    BOOL bFreeLib = FALSE, ret;  
    const char KERNEL32_NAME[] = "kernel32.dll";  
    hKernel32 = GetModuleHandleA(KERNEL32_NAME);  
    if (hKernel32 == NULL)  
    {  
    hKernel32 = LoadLibraryA(KERNEL32_NAME);  
    if (hKernel32 == NULL)  
    return FALSE;  
    bFreeLib = true;  
    }  
    SetConsoleDisplayMode =  (SCDMProc_t)GetProcAddress(hKernel32, "SetConsoleDisplayMode");  
    if (SetConsoleDisplayMode == NULL)  
    {  
    ret = FALSE;  
    }  
    else 
    {  
    ret = SetConsoleDisplayMode(hOutputHandle, dwNewMode, &tmp);  
    }  
    if (bFreeLib)  
    FreeLibrary(hKernel32);  
    return ret;  
    }  
    
    //e ovviamente si usa così:
    
    NT_SetConsoleDisplayMode( GetStdHandle( STD_OUTPUT_HANDLE ), 1 );

    Ciao

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    90
    Un po' complicatuccio per la mia modesta conoscenza ma grazie comunque!

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    90
    L'ho provato ma da errore alla linea 24 (le ho contate a mano potrei sbagliarmi).
    Questa in pratica:
    codice:
    ret = SetConsoleDisplayMode(hOutputHandle, dwNewMode, &tmp);
    Identificatore non dichiarato: tmp

  10. #10
    Come puoi vedere dalla documentazione MSDN (http://msdn.microsoft.com/en-us/libr...28(VS.85).aspx), il 3° argomento della funzione è optional per cui o lo elimini dalla funzione (cosa che io non ho fatto) oppure lo utilizzi.
    Sempre guardando la documentazione ti accorgi che tale argomento è un puntatore ad una struttura COORD, che può essere così utilizzata:
    codice:
    COORD coord;
    coord.X = 0; 
    coord.Y = 20;
    Purtroppo non ho l'IDE in questo PC e quindi rispondo "a memoria"..


    Ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.