2012-08-17 12 views
5

Qualcuno sa come disabilitare il pulsante di chiusura su una finestra della console di windows con un eseguibile .exe creato da un programma C?Come disattivare il pulsante di chiusura in C?

+2

Non è possibile. La finestra della console è un componente separato. L'unico modo è quello di creare un programma GUI in cui hai il controllo della tua finestra. – Mysticial

+0

Inoltre, perché vorresti farlo? – Mysticial

+0

voglio solo fare uno scherzo a mio fratello. ma devo assicurarmi che faccia paura. Sai che altro modo posso usare? dal modo in cui l'unico linguaggio di programmazione è konw è c, sfortunatamente – user1590836

risposta

0

Se si desidera disabilitare un pulsante in un programma in esecuzione ci sono dei metodi per farlo.

Il principio è trovare la finestra, quindi trovare il pulsante all'interno della finestra e quindi inviare un messaggio WM_DISABLE al pulsante.

5

Da here:

#define _WIN32_WINNT 0x0500 
#include <stdio.h> 
#include <windows.h> 

int main(int argc, _TCHAR* argv[]){ 
    HWND h; 
    HMENU sm; 
    int i, j, c; 
    LPTSTR buf; 
    // get the handle to the console 
    h = GetConsoleWindow(); 
    // get handle to the System Menu 
    sm = GetSystemMenu(h, 0); 
    // how many items are there? 
    c = GetMenuItemCount(sm); 
    j = -1; 
    buf = (TCHAR*) malloc (256 *sizeof(TCHAR)); 
    for (i=0; i<c; i++) { 
    // find the one we want 
    GetMenuString(sm, i, buf, 255, MF_BYPOSITION); 
    if (!strcmp(buf, "&Close")) {   
     j = i;   
     break;  
    } 
    } 
    // if found, remove that menu item 
    if (j >= 0) 
    RemoveMenu(sm, j, MF_BYPOSITION); 
    return 0; 
} 
+0

Non sono configurato per verificare questo, quindi 1 assumendo che funzioni. Non sapevo che avresti potuto afferrare la maniglia della finestra della console in quel modo. – Mysticial

+0

non ha funzionato, prova questo sul compilatore online: cmpe150-1.cmpe.boun.edu.tr/ – user1590836

+1

mi dispiace, funziona. Ho appena scritto l'altro codice prima di questo – user1590836