ALT键键盘事件在所有键盘布局中都不起作用?

时间:2015-08-08 18:12:41

标签: c# .net keyboard-events sendkeys

我正在尝试使用键盘事件将字符发送到应用程序。我想按alt键然后释放它。我使用以下代码来执行此操作。

const int VK_ALT = 0x12;
const uint KEYEVENTF_EXTENDEDKEY = 0x0001;
const uint KEYEVENTF_KEYUP = 0x0002;

keybd_event((byte)VK_ALT, 0, KEYEVENTF_EXTENDEDKEY | 0, 0);
keybd_event((byte)VK_ALT, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);

但alt键仅在English US layout keyboard中有效,而在其他键盘中则无效。我不知道为什么会这样。我怎么能让它独立于键盘布局

1 个答案:

答案 0 :(得分:0)

它可能与您的第二个参数(扫描码)为0有关。

对于' ALT'硬件'制作代码'是56或0x38,' Break Code'是184或0xB8。我已经看到应用程序使用其中任何一个进行按键/向上键。我的键盘似乎都发送了0x38。

另请注意,0x0001的EXTENDEDKEY表示您正在使用"右ALT"而0x0000用于"左ALT" (以防万一您的申请有所不同。)