等待keyPress(宏)发送消息

时间:2014-02-19 16:28:31

标签: c# text macros

所以我正在为我正在上课的课程制作课程。此程序任务是能够在TextBox中键入消息,并且能够设置宏的键以在当前的应用程序中发送此消息,因为C#程序在后台,没有聚焦。

我的问题是我找不到任何代码示例让程序没有重点,等待按键然后运行这个伪代码:

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

那里有没有人会有这方面的知识,如果在C#中甚至可能的话?

2 个答案:

答案 0 :(得分:0)

转到表单事件,双击KeyPress事件,在方法中输入以下逻辑:

private void Form1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == Keys.Enter) //Keys.Enter is your key.
            {
                textBox1.Text == "YOUR TEXT";
            }
        }

答案 1 :(得分:0)

“我的问题是我找不到任何代码示例让程序没有重点,等待按键”

当你的应用不在焦点时,你正在寻找一个按键。仅使用标准.Net无法做到这一点。该任务需要使用Windows API ...

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

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

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

  3. 低级键盘挂钩 - 您可以通过WH_KEYBOARD_LL使用低级键盘挂钩来捕获应用中的所有键盘按键。这是最具侵略性的,尽管用途广泛。

  4. 挑选你的毒药并进行搜索。在网上有很多这些方法的例子。