为什么windows的cmd窗口有时候会卡住?可能是快速编辑模式没关,有几种方法可以关闭(手动或是code)

在CMD窗口中,当使用鼠标点击某些文本时,可能会进入快速编辑模式,导致程序阻塞或卡死。

这是因为当程序不断滚动控制台窗口的内容时,用户无法合理地选择文本。因此,控制台主机程序只是停止读取stdout/stderr输出,程序将挂起,直到用户完成操作。出现这种情况按回车键又再次恢复了程序,有时候按ctrl+q、ctrl+s也可以恢复。

如果不希望CMD窗口支持快速编辑模式,可以参考以下方式进行关闭。

解决办法:

1.在CMD窗口中点击右键->属性->选项->编辑选项->取消勾选“快速编辑模式”

 但这个方法作用范围有限,我发现设置完cmd是禁用了,运行一个exe终端,发现它还是启动了快速编辑模式,所以每运行一次exe都需手动设置取消“快速编辑模式”。

2. 修改注册表

建立一个 批处理文件 xxx.bat, 写入以下内容:

@echo off
reg add HKEY_CURRENT_USER\Console /v QuickEdit /t REG_DWORD /d 00000000 /f

保存后执行即可. 以后新打开的命令行就会自动取消快速编辑模式

3.在自己要运行的程序里面加上取消“快速编辑模式”的code(放前面)

3.1 Python(验证可行):
import ctypes

# 取消或禁用控制台/终端的快速编辑模式
kernel32 = ctypes.windll.kernel32
kernel32.SetConsoleMode(kernel32.GetStdHandle(-10), (0x4 | 0x80 | 0x20 | 0x2 | 0x10 | 0x1 | 0x00 | 0x100))
3.2 C++(未验证):
HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE);

DWORD mode;
GetConsoleMode(hStdin, &mode);

mode &= ~ENABLE_QUICK_EDIT_MODE; //移除快速编辑模式

mode &= ~ENABLE_INSERT_MODE; //移除插入模式

mode &= ~ENABLE_MOUSE_INPUT;

SetConsoleMode(hStdin, mode);
  • 11
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ElaineTiger

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值