1

我在 C# 中使用 keybd_event win api 调用,我想模拟特殊的按键,比如alt+ f4alt+tab和类似的。我的程序可以处理“简单”按键,例如shift+ paltgr+w和简单使用tab, 或者enter也可以工作,但是当出现两个特殊按钮时(对于特殊按钮,我的意思是,alt或功能按钮),它似乎什么也没做。我的程序应该通过远程桌面处理多个表单,这就是我使用这个 keybd_event 调用的原因,但是例如+甚至在本地都不起作用(我在记事本上测试,但我不能用这个命令关闭它)。有人知道我在做什么错吗?甚至有可能让它们工作吗?shiftctrlaltf4

提前致谢!

编辑:

我创建了一个 DLLImport 类,在其中存储了所有 win api 调用。我也有一些辅助方法,例如:

private void PressAlt()
    {
        DLLImport.keybd_event(0xA0, 0x38, 0, 0);
    }

private void ReleaseAlt()
    {
        DLLImport.keybd_event(0xA0, 0x38, 0x0002, 0);
    }

对于选项卡,我在单独的方法中使用它:

DLLImport.keybd_event(0x09, 0x0f, 0, 0); //press tab

...

DLLImport.keybd_event(0x09, 0x0f, 0x0002, 0); //release tab

我现在用以下方法测试它:

PressAlt();

PressSpecial("tab");

ReleaseSpecial("tab");

ReleaseAlt();
4

1 回答 1

1

从您发布的代码看来,您至少有一个虚拟键代码的值错误(此处为 MSDN 参考)。

例如,代码0xA0是左 Shift 键 ( VK_LSHIFT),您应该尝试0x12( VK_MENU) 或0xA4( VK_LMENU) 代替。

注意 - CodeProject 上有常用虚拟键码和扫描码的有用摘要。

于 2013-07-10T14:45:15.650 回答