如何手动发送键盘扫描码?

时间:2009-04-14 04:28:12

标签: c# sendkeys

我正在开发一个需要模拟Windows键按键的项目。我试过SendKeys.Send无济于事。

具体来说,windows键需要与按钮一致。也就是说,我想发送Windows密钥和加/减。

4 个答案:

答案 0 :(得分:6)

我想补充一点,通常不太可能在.NET框架中找到这样的低级函数。如果你对这些建议都指向“非C#”函数感到困惑,那么你可能会在P/Invoke上使用一些细节。

基本上有一些方法可以定义C#函数,将它们“绑定”到.NET程序集中不存在的Windows API函数(相反,它们通常用C ++实现,可用作标准DLL)。此过程被认为是“(Windows)平台调用”(因此P / Invoke)。

一开始可能有点不稳定地匹配C ++和C#样式调用之间的所有数据类型,但幸运的是,还有其他一些已经铺平了道路。

建议的功能SendInputPInvoke wrapper处有PInvoke.net。这个包装类在程序集中可用时,允许您调用SendInput,就像它是C#函数一样。

PInvoke.net基本上是用于Windows中众所周知的API调用的PInvoke wiki,并且通常具有API调用的C#/ VB.NET包装。

答案 1 :(得分:2)

我认为你最好的选择是使用keybd_event keydown(称为ExtendedKey),使用System.Windows.Forms.Keys枚举的LWin值,然后使用keydown第二个字符(+),并键入两个键。

我不相信SendKeys使用Windows键作为修饰符。

答案 2 :(得分:1)

尝试SendInput或旧的keybd_event

答案 3 :(得分:1)

这可能有点矫枉过正,但您可以尝试使用AutoItX这是一种将AutoIt用作DLL的方法。我只编写了独立脚本,但我知道AutoIt可以很容易地模拟按下Windows键。

例如,打开运行对话框只是:

  

发送(“#r”); Win + R =运行