VC 無效化控制台視窗的關閉按鈕 選單

2021-06-16 16:44:41 字數 572 閱讀 6730

測試環境:vc++ 6.0

批處理執行到一半就被強行關閉,實在是令編寫者不爽的事情。本教程就是讓大家學會,如何在控制台程式中無效化關閉按鈕。同樣,通過小改小動,也可以寫出屬於自己的第三方工具,讓批處理呼叫後達到無效化關閉按鈕的效果。

(注意:在任務管理器和工作列右鍵中還是可以關掉的)

關閉按鈕,是在系統選單中的。通過api函式enablemenuitem可以給關閉按鈕加上多種效果,包括無效化和灰化。

enablemenuitem需要得到選單的控制代碼,這就需要用到api函式getsystenmenu。getsystemmenu可以給出指定視窗的系統選單。

接下來,只需要獲得控制台視窗的控制代碼了。可以參考文章:vc 獲取控制台視窗的控制代碼(hwnd)

那麼,控制台視窗的控制代碼為hwnd的話,將關閉按鈕無效化的完整**為:

hmenu hmenu;

hmenu=getsystemmenu(hwnd,false);

enablemenuitem(hmenu,sc_close,mf_grayed|mf_bycommand);

同理,還可以將視窗的其他屬性灰化和無效化。

360雲盤

控制台 禁用關閉按鈕

控制台中禁止使用右上角的關閉按鈕,下面是核心 1 dllimport user32.dll entrypoint findwindow 2 extern static intptr findwindow string lpclassname,string lpwindowname 3 dllimpo...

vc 控制台視窗程式設計 自定義控制台視窗

include include include define rtn ok 1 define rtn err 0 int consoletest fillconsoleoutputcharacter hout,binfo.dwsize.x binfo.dwsize.y,pos,null 向視窗中填充...

沒有控制台視窗的控制台程式

include include pragma comment linker,subsystem windows entry maincrtstartup int main int argc,char argv 編譯後執行程式會彈出乙個訊息框,而沒有背後的控制台視窗。再看看下面的 include in...