gpt4 book ai didi

c# - 在 C# 控制台应用程序中,暂停键会卡住显示输出。我可以禁用它吗?

转载 作者:行者123 更新时间:2023-11-30 12:14:15 31 4
gpt4 key购买 nike

在 C# 控制台应用程序中,按暂停键会卡住显示输出。我可以禁用它吗?

我希望有一个类似 Console.CancelKeyPress 事件的处理程序来处理 Ctrl+C 输入。

最佳答案

每隔一段时间,控制台程序就会发出 Hook 键的请求。 standard events like CTRL_C_EVENT and CTRL_CLOSE_EVENT不包括暂停事件。我试过使用后台线程这样做,但我似乎无法管理。但是,有一个不太难的解决方法:使用额外的进程。

下载这个易于使用的 global keyboard hook for C# .然后,当您打开该项目时,将以下代码放入 Form1.cs 中:

public partial class Form1 : Form {

globalKeyboardHook globalKeyboardHook = new globalKeyboardHook();

public Form1() {
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e) {
globalKeyboardHook.HookedKeys.Add(Keys.Pause);
globalKeyboardHook.KeyDown += new KeyEventHandler(globalKeyboardHook_KeyDown);
globalKeyboardHook.KeyUp += new KeyEventHandler(globalKeyboardHook_KeyUp);
}

void globalKeyboardHook_KeyUp(object sender, KeyEventArgs e)
{
// remove this when you want to run invisible
lstLog.Items.Add("Up\t" + e.KeyCode.ToString());

// this prevents the key from bubbling up in other programs
e.Handled = true;
}

void globalKeyboardHook_KeyDown(object sender, KeyEventArgs e)
{
// remove this when you want to run without visible window
lstLog.Items.Add("Down\t" + e.KeyCode.ToString());

// this prevents the key from bubbling up in other programs
e.Handled = true;
}
}

然后,剩下的就变得微不足道了:

  1. 更改您的程序以启动上述程序并正常运行
  2. 尝试按暂停键
  3. 它会被其他程序捕获
  4. 您的程序不会暂停。

我自己尝试了上面的方法,它有效。

PS:我并不是说没有直接从控制台程序的可能方法。很可能有,我只是没有找到它,上面的全局 keyhook 库在控制台应用程序中不起作用。

关于c# - 在 C# 控制台应用程序中,暂停键会卡住显示输出。我可以禁用它吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9950863/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com