2012-08-17 10 views
5

Czy ktoś wie, jak wyłączyć przycisk zamykania w oknie konsoli systemu Windows za pomocą pliku wykonywalnego .exe utworzonego z programu C?Jak wyłączyć przycisk zamykania w C?

+2

Nie możesz. Okno konsoli jest oddzielnym komponentem. Jedynym sposobem jest zbudowanie programu GUI, w którym masz kontrolę nad własnymi oknami. – Mysticial

+0

Ponadto, dlaczego chcesz to zrobić? – Mysticial

+0

Chcę po prostu zrobić kawał dla mojego brata. ale muszę się upewnić, że się wkurzy. czy znasz inny sposób, z którego mogę skorzystać? nawiasem mówiąc, jedynym językiem programowania i konw jest c, niestety – user1590836

Odpowiedz

0

Jeśli chcesz wyłączyć przycisk w uruchomionym programie, istnieją metody, aby to zrobić.

Zasada polega na znalezieniu okna, a następnie znalezieniu przycisku w oknie, a następnie wysłaniu komunikatu WM_DISABLE do przycisku.

5

Od 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

Nie jestem skonfigurowany do testowania tego, więc +1 przy założeniu, że działa. Nie wiedziałem, że można tak chwycić uchwyt do okna konsoli. – Mysticial

+0

nie działa, spróbuj tego na kompilatorze online: cmpe150-1.cmpe.boun.edu.tr/ – user1590836

+1

Przykro mi, to działa. Właśnie napisałem inny kod przed tym – user1590836

Powiązane problemy