打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Python 控制台窗体关闭按钮禁用和启用

很多Python控制台程序需长期运行,但是一不小心就点上控制台窗体关闭按钮,没有任何提示就终止了正在运行的程序。 因此需禁用控制台窗体关闭按钮(X),当然根据需要也可以启用关闭按钮。

控制台窗口(windows)需安装pywin32api,引用其中的win32console, win32gui和 win32con 三个模块。获取窗口和菜单句柄,调用win32gui.EnableMenuItem方法。不要用网上有些人采用的win32gui.DeleteMenu方法,那样删除后想恢复就比较麻烦。

EnableMenuItem函数原型:

BOOL EnableMenuItem(

  HMENU hMenu,  //菜单句柄

  UINT uIDEnableItem,  //菜单条目的标识符

  UINT wEnable //菜单常数标志

  );

返回值 :返回值指定的先前状态菜单项。如果菜单项不存在,返回值是0xffffffff

EnableMenuItem函数只能指定下述常数:

· MF_BYCOMMAND 指定参数给出已存在的菜单项的命令ID号。此为缺省值。

· MF_BYPOSITION 指定参数给出已存在菜单项的位置。第一项所在的位置是0。

· MF_DISABLED 使菜单项无效,以便它不能被选择,但不变灰。

· MF_ENABLED 使菜单项有效,以便它能够被选择,并可从变灰的状态中恢复出来。

· MF_GRAYED 使菜单项无效,以便它不能被选择并同时变灰。

根据 win32con,获取关闭按钮菜单条目、菜单常数关闭按钮菜单条目为win32con.SC_CLOSE;菜单常数win32con.MF_DISABLED使菜单无效,win32con.MF_ENABLED 使菜单有效。

Python 代码如下:

 


import win32console

import win32gui

import win32con


def DisableCloseButton():

    hwnd = win32console.GetConsoleWindow()

    if hwnd:

        hMenu = win32gui.GetSystemMenu(hwnd0)

        if hMenu:

            win32gui.EnableMenuItem(

                hMenuwin32con.SC_CLOSEwin32con.MF_DISABLED)


def EnableCloseButton():

    hwnd = win32console.GetConsoleWindow()

    if hwnd:

        hMenu = win32gui.GetSystemMenu(hwnd0)

        if hMenu:

            win32gui.EnableMenuItem(

                hMenuwin32con.SC_CLOSEwin32con.MF_ENABLED)


def setwindowtitle(title):

    hwnd = win32console.GetConsoleWindow()

    win32gui.SetWindowText(hwndtitle)


if __name__ == "__main__":

    setwindowtitle(title="控制台关闭按钮示例")

    ok = True

    while(ok):

        instr = input(">>")

        if instr == "exit":

            EnableCloseButton()

            ok = False

        elif instr == "hide":

            DisableCloseButton()

        elif instr == "show":

            EnableCloseButton()

        else:

            print("\n输入指令:hide——隐藏控制台关闭按钮;show——显示控制台关闭按钮;exit——退出程序")

            pass




 
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
C#使用API禁用/删除程序窗体的关闭菜单和按钮 | 真有意思
VB 用API创建动态菜单示例(含子菜单且能响应事件)
Excel窗体API应用技巧
如何取消窗体的关闭按钮
VBA 窗体之禁用窗体关闭按钮
VC 在对话框中增加菜单栏
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服