3ds Max 2016的版本怎么处理 按键输入被主程序截断 C#winform窗体接受不到英文输入
如果窗体失去焦点应该取消 全局监听事件
解决方案:在窗体失去焦点时取消全局键盘钩子
为了确保 WinForms 窗体失去焦点时不再拦截键盘事件(避免影响 3ds Max 或其他程序),我们需要在 Deactivate
事件中 临时卸载钩子,并在窗体重新激活时恢复。
using System;
using System.Windows.Forms;
public class KeyCaptureForm : Form
{
private GlobalKeyboardHook _keyboardHook;
private TextBox _textBox;
public KeyCaptureForm()
{
this.Text = "全局键盘监听";
_textBox = new TextBox { Width = 300, Multiline = true, Height = 200 };
this.Controls.Add(_textBox);
// 初始化全局键盘钩子
_keyboardHook = new GlobalKeyboardHook();
_keyboardHook.OnKeyDown += (keyCode) =>
{
_textBox.AppendText($"按下: {(Keys)keyCode}\n");
};
_keyboardHook.OnKeyUp += (keyCode) =>
{
_textBox.AppendText($"释放: {(Keys)keyCode}\n");
};
this.FormClosed += (s, e) => _keyboardHook.Dispose();
}
}