Node.js 关闭 window 命令提示符 Console 控制台的快速编辑模式

1,990次阅读
没有评论

共计 1332 个字符,预计需要花费 4 分钟才能阅读完成。

提醒:本文最后更新于2025-07-07 14:43,文中所关联的信息可能已发生改变,请知悉!

windows 10 的 cmd 命令提示符下,如果你双击界面中的字符,则可能会发现可以快速选中部分文字,鼠标拖动模式也可以进行区域选择。

这是因为在 cmd 的选项配置中,默认开启了 “快速编辑模式”。但是可能你也会发现,控制台可能会在此时被卡住,本应继续执行的命令被暂停了,此时只有按一下回车键才会继续执行。

简单来说,“快捷编辑模式”方便了我们从命令提示符中快速选取和复制信息,但也可能因此导致程序频繁的意外卡住而暂停。如果避免这种意外发生呢?答案只能是禁用“快捷编辑模式”。

对于程序的使用者来说,只需要在命令提示符上“右键->属性”中取消其选中即可。

Node.js 关闭 window 命令提示符 Console 控制台的快速编辑模式

对于命令行程序的开发者来说可以怎么做?

在微软的控制台开发文档中,我们可以找到 SetConsoleMode 函数,通过它可以开启或关闭快速编辑模式。

然而 SetConsoleMode 只是 Win32 SDK 为 C 语言提供的控制台开发接口。在 nodejs 中有没有办法呢?

其实命令提示符属性选项的默认配置都是保存在注册表中的,所以可以通过读取或设置注册表项来修改它:

# 读取 QuickEdit 的设置
reg query HKEY_CURRENT_USER\\Console /v QuickEdit
# 设置 QuickEdit (关闭)
reg add HKEY_CURRENT_USER\\Console /v QuickEdit /t REG_DWORD /d 00000000 /f

我们知道 nodeJs 的 child_process.exec 方法可以用于执行 cmd 命令。那么我们就可以变通的实现关闭或开启快捷编辑模式了。

以下为一个示例:

const child_process = reuqire('child_process');
/** 开启或关闭 window 的快速编辑模式 */
const setQuickEdit = async (enable = false) => {
if (process.platform !== 'win32') return;
try {
let cmd = 'reg query HKEY_CURRENT_USER\\Console /v QuickEdit';
const quickEditSetting = await child_process.execSync(cmd);
const isEnabled = quickEditSetting && String(quickEditSetting).trim().endsWith('1');
// console.log(String(quickEditSetting).trim());
if (isEnabled === enable) return;
cmd = `reg add HKEY_CURRENT_USER\\Console /v QuickEdit /t REG_DWORD /d 0000000${enable ? '1' : '0'} /f`;
await child_process.execSync(cmd);
return true;
} catch (err) {
console.log(err);
return false;
}
};

注意,与 SetConsoleMode函数不同的是,SetConsoleMode 可以只设置当前 cmd 窗口,而以上方法只能实现全局性的开启或关闭“快速编辑模式”。

正文完
 0
任侠
版权声明:本站原创文章,由 任侠 于2020-09-09发表,共计1332字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码