从我的应用程序中关闭 Windows 10 控制台“标记”模式

std*_*ave 3 python console-application windows-10

我有一个用 Python 编写的控制台应用程序。Windows 10 控制台的“标记”模式让我非常沮丧,因为用户在执行诸如切换窗口之类的简单操作时不小心单击了应用程序。我有什么办法可以控制和阻止这种情况吗?

对于那些不了解标记模式的人来说,这是当用户在控制台窗口中选择某些文本时的情况。当程序下次写入stdout时,整个程序被暂停,这非常烦人。

Ste*_*uch 5

Windows 10 中使用鼠标的自动“标记”模式是之前版本的“快速编辑”模式。我相信唯一的区别是它现在默认打开。可以通过代码启用/禁用快速编辑模式:

import time
import win32console

ENABLE_QUICK_EDIT_MODE = 0x40
ENABLE_EXTENDED_FLAGS = 0x80


def quick_edit_mode(turn_on=None):
    """ Enable/Disable windows console Quick Edit Mode """
    screen_buffer = win32console.GetStdHandle(-10)
    orig_mode = screen_buffer.GetConsoleMode()
    is_on = (orig_mode & ENABLE_QUICK_EDIT_MODE)
    if is_on != turn_on and turn_on is not None:
        if turn_on:
            new_mode = orig_mode | ENABLE_QUICK_EDIT_MODE
        else:
            new_mode = orig_mode & ~ENABLE_QUICK_EDIT_MODE
        screen_buffer.SetConsoleMode(new_mode | ENABLE_EXTENDED_FLAGS)

    return is_on if turn_on is None else turn_on

quick_edit_enabled = quick_edit_mode()
while True:
    print('Quick edit is %s' % ('on' if quick_edit_enabled else 'off'))
    time.sleep(3)
    quick_edit_enabled = quick_edit_mode(not quick_edit_enabled)
Run Code Online (Sandbox Code Playgroud)