【问题标题】:How to send keyboard key in my application?如何在我的应用程序中发送键盘键?
【发布时间】:2026-02-06 04:55:01
【问题描述】:

我目前在 C# 中使用SendKeys.SendWait(text); 但是SendKeys 发送全局密钥,我必须激活我的应用程序然后发送它。另一个问题是,当我在键盘上(在另一个应用程序中)输入内容并且SendKeys 函数激活(在我的应用程序中)时,就会发生错误。

那么,无论哪个应用程序处于活动状态以及我在键盘上输入了什么,我如何才能向我的应用程序发送消息?

【问题讨论】:

  • 这个应用的目的是什么,能否提供一些你已有的相关代码?
  • 它是一个机器人程序 - 使用 webbrowser 控制。我想输入消息并发送它。我无法通过更改输入表单的值来做到这一点......所以我必须将密钥发送到应用程序。关于你想要的代码 - 有注意事项显示。我只是使用上面的函数来发送密钥,仅此而已,但我想更改该函数以符合我的要求。

标签: c# .net keyboard


【解决方案1】:

SendMessage() 做你想做的事。你需要像这样使用它:

[DllImport("user32.dll", CharSet = CharSet.Auto)]
static extern IntPtr SendMessage(IntPtr hWnd, UInt32 Msg, IntPtr wParam, IntPtr lParam);

const UInt32 WM_CHAR = 0x0102;
const int VK_Q = 0x51; // taken from http://msdn.microsoft.com/en-us/library/dd375731(v=vs.85).aspx

SendMessage(handleToTheInputForm, WM_CHAR, VK_Q, 1);

【讨论】:

    【解决方案2】:

    您需要在其他应用程序的窗口上获得handle,以便您可以将其聚焦并可靠地将您的击键发送给它,

    看看这个教程

    http://www.codeproject.com/KB/cs/SendKeys.aspx

    【讨论】:

    • 是的,我现在这样做了,但我又说会发生错误。我不希望我的应用程序依赖于哪个应用程序处于活动状态...