2012-04-02 53 views
0

我想在我的应用程序中制作,比当这个应用程序在后台时,当我点击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

请详细说明什么是不工作。 – cadrell0 2012-04-02 13:33:25

+0

这是去内功能WndProc,但从来没有在9000和9001的情况下 – cadi2108 2012-04-02 13:51:45

+0

我不打算标记为重复,但这可能是相关的? http://stackoverflow.com/questions/6664420/f10-key-is-not-caught – cadrell0 2012-04-02 14:21:24

回答

1

的时候我会点击F10

错误的键,你必须键入Ctrl + F10。你作为RegisterHotKey()的第三个参数传递了2,那就是MOD_控制。使用常量或枚举声明而不是原始文本可以帮助您陷入成功的困境。

+0

谢谢你,你是对的! – cadi2108 2012-04-03 08:57:49