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

发布于 2024-07-17 05:06:13 字数 128 浏览 8 评论 0 原文

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

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

I'm working on a project that needs to emulate a keypress of the Windows key. I've tried SendKeys.Send to no avail.

Specifically, the windows key needs to come in concert with a button. That is, I want to send Windows Key and plus / minus.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

酸甜透明夹心 2024-07-24 05:06:13

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

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

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

建议的函数 SendInput 具有 < a href="http://www.pinvoke.net/default.aspx/user32.SendInput" rel="noreferrer">PInvoke 包装器 位于 PInvoke.net。 当程序集中可用时,此包装类将允许您像调用 C# 函数一样调用 SendInput。

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

I would add that it is often unlikely for you to find lower level functions like these in the .NET framework. If you were confused as to why the suggestions both pointed to "non C#" functions, then you probably could use some details on P/Invoke.

Basically there are ways to define C# functions that "tie" them to Windows API functions that do not exist within .NET assemblies (Instead they are typically implemented in C++ and available as a standard DLL). This process is considered to be "(Windows) Platform Invoking" (thus P/Invoke).

It can be a bit wobbly at first to match up all the data types between C++ and C# style calls, but fortunately, there are others out there that have paved the way.

The suggested function, SendInput, has a PInvoke wrapper over at PInvoke.net. This wrapper class, when available in your assembly, will allow you to call SendInput as if it were a C# function.

PInvoke.net is basically a PInvoke wiki for well known API calls in windows, and typically has a C#/VB.NET wrapper of API calls.

不回头走下去 2024-07-24 05:06:13

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

我不相信 SendKeys 可以与 Windows 键一起用作修饰符。

I think your best bet is using keybd_event keydown (called ExtendedKey) with the LWin value of the System.Windows.Forms.Keys enum, then keydown second character (+), and keyup both keys.

I do not believe SendKeys works with the Windows key as a modifier.

伤感在游骋 2024-07-24 05:06:13

这可能有点过头了,但你可以尝试使用 AutoItX 这是一种将 AutoIt 用作 DLL 的方法。 我只编写过独立脚本,但我知道 AutoIt 可以非常轻松地模拟按下 Windows 键。

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

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

This may be overkill, but you could try using AutoItX which is a way to use AutoIt as a DLL. I've only written standalone scripts, but I know AutoIt makes it very easy to simulate pressing the Windows key.

For example, to open the run dialog is just:

Send("#r") ;Win + R = run

他是夢罘是命 2024-07-24 05:06:13

尝试 SendInput 或较旧的 keybd_event

Try SendInput or the older keybd_event

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文