c# - 发送 Numpad 上的特定键,例如 +、- 或 Enter(模拟按键)

标签 c# .net keyboard automation sendkeys

我正在从事一个项目,需要模拟按键以在不同的应用程序中引起特定行为。

使用正在导入的 keybd_event 函数,一切都运行良好(可能有更好的方法,但它运行良好)。

现在我想添加对所有小键盘的特定支持。

看着e。 G。这里http://msdn.microsoft.com/en-us/library/dd375731(v=VS.85).aspx或者在 System.Windows.Input.Key 命名空间中,我可以轻松找到 Num0..Num9 以及 NumLock 的键。但是..我找不到 Num/、Num+、NumEnter 等的任何内容。

我编写了一个快速的 froms 应用程序来捕获 keydown 事件,输出事件参数,并得到了一些有趣的结果:

e.KeyCode NumLock e.KeyData NumLock e.KeyValue 144 e.Modifiers None  
e.KeyCode Divide e.KeyData Divide e.KeyValue 111 e.Modifiers None  
e.KeyCode Multiply e.KeyData Multiply e.KeyValue 106 e.Modifiers None  
e.KeyCode Subtract e.KeyData Subtract e.KeyValue 109 e.Modifiers None  
e.KeyCode Add e.KeyData Add e.KeyValue 107 e.Modifiers None  
e.KeyCode NumLock e.KeyData NumLock e.KeyValue 144 e.Modifiers None  
e.KeyCode NumLock e.KeyData NumLock e.KeyValue 144 e.Modifiers None  
e.KeyCode Divide e.KeyData Divide e.KeyValue 111 e.Modifiers None  
e.KeyCode Multiply e.KeyData Multiply e.KeyValue 106 e.Modifiers None  
e.KeyCode Subtract e.KeyData Subtract e.KeyValue 109 e.Modifiers None  
e.KeyCode Add e.KeyData Add e.KeyValue 107 e.Modifiers None  
e.KeyCode Return e.KeyData Return e.KeyValue 13 e.Modifiers None

Num+ 键(等等)似乎是 Windows 称为功能键的键(如 Num+ 键的 F18)。所以..这很奇怪,但没关系。

但是.. 我无法区分 Enter-Key 和 NumEnter 键。这些对于我的应用程序是不同的,所以我必须为两者发送特定的键码。

这就是我的问题:如何发送普通的回车键以及如何发送 NumEnter 键?

(我不知道这是否有任何区别,我使用的是德语键盘布局。)

感谢任何想法!

最佳答案

我找到了这个 here 对我有用!

protected override void WndProc(ref Message m)
{
     if (m.Msg == 256 && m.WParam.ToInt32() == 13)
     {   // WM_KEYDOWN == 256, Enter == 13
         if ((m.LParam.ToInt32() >> 24) == 0)
         {
             MessageBox.Show("main enter pressed!");
         }
         else
         {
             MessageBox.Show("numpad enter pressed!");
         }
      }
      else
      {
         base.WndProc(ref m);
      }
}

关于c# - 发送 Numpad 上的特定键,例如 +、- 或 Enter(模拟按键),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5989380/

相关文章:

c# - 除非 Silverlight 项目托管在同一个项目中,否则对 Web 服务的调用将失败

ios - 当键盘出现在 iPad 应用程序中时,在工具栏中滚动 UISearchBar?

c# - WCF 服务未运行/或未在 IIS 上识别

c# - ICommunicationObject.State 不起作用?

c# - 如何清除 NLog 中的 MemoryTarget 日志?

c# - 如何使用 JSON.NET 反序列化日期(毫秒)?

ios - 使用 WKWebView 修改键盘工具栏/附件 View

javascript - 带有 Cbp 图像 slider 的键盘箭头键导航

c# - 命令行 c# 代码有效,但 winforms 代码无效

c# - Fluent nhibernate 一对一映射