Отправка горячих клавиш для программирования в фоновом режиме - PullRequest
0 голосов
/ 02 апреля 2012

Я хочу сделать в моем приложении, чем когда это приложение находится в фоновом режиме, когда я нажму 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 Ответ

1 голос
/ 02 апреля 2012

когда я нажму F10

Неправильная клавиша, вам нужно набрать Ctrl + F10. Вы передали 2 в качестве третьего аргумента для RegisterHotKey (), это MOD_CONTROL. Использование объявлений const или enum вместо необработанных литералов поможет вам попасть в пропасть успеха.

...