C# 等待按键(宏)发送消息

C# 等待按键(宏)发送消息,c#,text,macros,C#,Text,Macros,所以我正在为我要上的课做一个程序。这个程序任务是能够在文本框中键入消息,并且能够为宏设置一个键,以便在您当前使用的任何应用程序中发送此消息,因为C#程序处于后台,不聚焦 我的问题是,我找不到任何代码示例使程序没有焦点,请等待按键,然后运行以下伪代码: If (KeyPress = F1) { Send {Enter}; Send {Text from textbox}; Send {Enter}; } 有没有人会有这样的知识?如果在C#?中有可能,请转到表单事件,双击按键事件,在方法中输入以下

所以我正在为我要上的课做一个程序。这个程序任务是能够在文本框中键入消息,并且能够为宏设置一个键,以便在您当前使用的任何应用程序中发送此消息,因为C#程序处于后台,不聚焦


我的问题是,我找不到任何代码示例使程序没有焦点,请等待按键,然后运行以下伪代码:

If (KeyPress = F1)
{
Send {Enter};
Send {Text from textbox};
Send {Enter};
}

有没有人会有这样的知识?如果在C#?

中有可能,请转到表单事件,双击按键事件,在方法中输入以下逻辑:

private void Form1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == Keys.Enter) //Keys.Enter is your key.
            {
                textBox1.Text == "YOUR TEXT";
            }
        }
“我的问题是,我找不到任何代码示例使程序无法聚焦,请等待按键”

当你的应用程序未聚焦时,你正在寻找一个按键陷阱。仅使用标准.Net无法做到这一点。此任务需要使用Windows API

解决这个问题有三种可能的方法

  • 轮询-可以使用计时器和GetAsyncKeyState()API轮询键盘状态。虽然这在技术上是可行的,但不是推荐的方法

  • 系统范围注册热键-您可以使用RegisterHotkey()API在应用程序中注册特定的热键组合。这是三种选择中资源密集度最低的方法。然而,有一个巨大的缺点。如果你想要的热键组合已经被另一个应用程序使用了,那么你就是索尔(太幸运了)。检查注册请求的返回值以确定是否成功

  • 低级键盘挂钩-通过WH_Keyboard LL使用低级键盘挂钩,您可以捕获应用程序中的所有键盘按键。这是最具侵入性的,尽管是多功能的选择


  • 选择你的毒药并进行搜索。网上有很多关于所有这些方法的例子。

    我已经编辑了你的标题。请看“”,其中的共识是“不,他们不应该”。通常情况下,您会使用键盘挂钩来实现这一点,这在C#中是可能的,但绝对不是微不足道的。全局键盘快捷键也可以工作。我建议你用谷歌搜索这两种方法。这就是表单的目的:1:它启动了2:你在文本字段中输入文本3:你最小化表单4:假设你打开记事本,按下一个热键5:当按下所述热键时,表单发送一条消息该程序的目的是将文本插入另一个程序,因此,我想发送文本,模拟正在键入的键盘,而不是更改我正在制作的程序中texbox的文本。