4

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

具体来说,windows 键需要与按钮配合使用。也就是说,我要发送 Windows Key 和加/减。

4

4 回答 4

7

我要补充一点,您通常不太可能在 .NET 框架中找到像这些较低级别的函数。如果您对为什么这些建议都指向“非 C#”函数感到困惑,那么您可能可以在P/Invoke上使用一些详细信息。

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

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

建议的函数SendInputPInvoke.net上有一个PInvoke 包装器。此包装类在您的程序集中可用时,将允许您像调用 C# 函数一样调用 SendInput。

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

于 2009-04-16T00:12:21.970 回答
2

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

我不相信 SendKeys 可以将 Windows 键用作修饰符。

于 2009-04-14T05:09:56.687 回答
1

尝试SendInput或旧的keybd_event

于 2009-04-14T04:46:26.510 回答
1

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

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

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

于 2009-04-16T12:31:43.027 回答