【控制台】快速编辑模式
【控制台】快速编辑模式
Windows Cmd控制台程序会被鼠标单击暂停的解决方法,控制台程序在创建之后默认是打开了快速编辑模式,既当你的程序运行的时候,你点击界面,界面会出现一个白色的方框,然后程序就不运行了,不管有多少个线程。
方式一
第一种方式,在控制台程序状态栏右键属性,去掉快速编辑模式的勾选
方式二
第二种方式,就是在你的程序中添加代码,关闭快速编辑模式
C语言
#include <chrono>
#include <iostream>
#include <thread>
#include <windows.h>
int main()
{
// 关闭控制台程序的快速编辑模式,否则会出现点击界面,程序将会变成阻塞状态,不按回车无法继续运行
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);
// 以下是测试程序
int count = 0;
while (true) { // 无限循环
std::cout << "\rCount: " << count;
count++;
// 暂停 0.5 秒
std::this_thread::sleep_for(std::chrono::milliseconds(500));
}
return 0;
}
python语言
import sys, time
import ctypes
import ctypes.wintypes
def disable_quick_edit():
# 获取控制台句柄
STD_INPUT_HANDLE = -10
hStdin = ctypes.windll.kernel32.GetStdHandle(STD_INPUT_HANDLE)
# 获取当前控制台模式
mode = ctypes.wintypes.DWORD()
ctypes.windll.kernel32.GetConsoleMode(hStdin, ctypes.byref(mode))
# 禁用快速编辑模式
mode.value &= ~0x0040 # 0x0040 是 ENABLE_QUICK_EDIT_MODE
ctypes.windll.kernel32.SetConsoleMode(hStdin, mode)
# 测试函数
def loop():
i = 0
while True:
sys.stdout.write(f"\rCount: {i}")
time.sleep(0.5)
i+=1
if __name__ == "__main__":
disable_quick_edit()
print("快速编辑模式已禁用。")
loop()

浙公网安备 33010602011771号