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();}
}