发送热键在背景中编程

时间:2012-04-02 13:32:16

标签: c# global-hotkey

我想在我的应用程序中创建,而不是当这个应用程序在后台时,当我点击F10时,带循环的函数将开始。

这是我的代码:

    namespace test
    {
       public partial class Form1 : Form
       {
          [DllImport("user32.dll")]
          public static extern bool RegisterHotKey(IntPtr hWnd, int id, int fsModifiers, int vlc);

          [DllImport("user32.dll")]
          public static extern bool UnregisterHotKey(IntPtr hWnd, int id);

          public Form1() //(lub Form1_Load(object sender, System.EventArgs e))
          {
             RegisterHotKey(this.Handle,9000, 2, (int) Keys.F10);   

             InitializeComponent();
          }

          private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
          {
             UnregisterHotKey(this.Handle,9000);
             UnregisterHotKey(this.Handle,9001);

          }

          protected override void WndProc(ref Message m)
          {
             base.WndProc(ref m);
             switch (m.Msg)
             {
               case 0x312:
                  switch (m.WParam.ToInt32())
                  {
                    case 9000:
                        //code
                        break;
                    case 9001:
                        //code
                        break;
                  }
                  break;
              }
          }
       }
    }

但是不要工作:(

你能帮我吗?

1 个答案:

答案 0 :(得分:1)

  

当我点击F10

错误的密钥,您必须输入Ctrl + F10。您将2作为第3个参数传递给RegisterHotKey(),即MOD_CONTROL。使用const或enum声明而不是原始文字可以帮助你陷入成功之中。