我想问一下,RegisterHotkey函数能不能只局限于自己的程序中起作用,因为当我注册了键后,,在其它程序处于激活状态时,按键时 也会触我的程序的OnHotkey事件,下面是的的代码,希望大家能帮帮我,,谢谢
using System; 
using System.Runtime.InteropServices; namespace SystemHotKey 

    public delegate void HotkeyEventHandler(int HotKeyID);     public class Hotkey : System.Windows.Forms.IMessageFilter 
    { 
        System.Collections.Hashtable keyIDs = new System.Collections.Hashtable(); 
        IntPtr hWnd;         public event HotkeyEventHandler OnHotkey;         public enum KeyFlags 
        { 
            None = 0x0, 
            MOD_ALT = 0x1, 
            MOD_CONTROL = 0x2, 
            MOD_SHIFT = 0x4, 
            MOD_WIN = 0x8 
        } 
        [DllImport("user32.dll")] 
        public static extern UInt32 RegisterHotKey(IntPtr hWnd, UInt32 id, UInt32 fsModifiers, UInt32 vk);         [DllImport("user32.dll")] 
        public static extern UInt32 UnregisterHotKey(IntPtr hWnd, UInt32 id);         [DllImport("kernel32.dll")] 
        public static extern UInt32 GlobalAddAtom(String lpString);         [DllImport("kernel32.dll")] 
        public static extern UInt32 GlobalDeleteAtom(UInt32 nAtom);         public Hotkey(IntPtr hWnd) 
        { 
            this.hWnd = hWnd; 
            System.Windows.Forms.Application.AddMessageFilter(this); 
        }         public int RegisterHotkey(System.Windows.Forms.Keys Key, KeyFlags keyflags) 
        { 
            UInt32 hotkeyid = GlobalAddAtom(System.Guid.NewGuid().ToString()); 
            RegisterHotKey((IntPtr)hWnd, hotkeyid, (UInt32)keyflags, (UInt32)Key); 
            keyIDs.Add(hotkeyid, hotkeyid); 
            return (int)hotkeyid; 
        }         public void UnregisterHotkeys() 
        { 
            System.Windows.Forms.Application.RemoveMessageFilter(this); 
            foreach (UInt32 key in keyIDs.Values) 
            { 
                UnregisterHotKey(hWnd, key); 
                GlobalDeleteAtom(key); 
            } 
        }         public bool PreFilterMessage(ref System.Windows.Forms.Message m) 
        { 
            if (m.Msg == 0x312) 
            { 
                if (OnHotkey != null) 
                { 
                    foreach (UInt32 key in keyIDs.Values) 
                    { 
                        if ((UInt32)m.WParam == key) 
                        { 
                            OnHotkey((int)m.WParam); 
                            return true; 
                        } 
                    } 
                } 
            } 
            return false; 
        } 
    } 
}     private void Form1_Load(object sender, EventArgs e) 
        { 
            Hotkey hotkey; 
            hotkey = new Hotkey(this.Handle);             //定义快键(Ctrl + F1) 
            Hotkey1 = hotkey.RegisterHotkey(System.Windows.Forms.Keys.F1, Hotkey.KeyFlags.None); //F1 
            hotkey.OnHotkey += new HotkeyEventHandler(OnHotkey);              
        } 
   public void OnHotkey(int HotkeyID) 
        { 
            if (HotkeyID == Hotkey1) 
            { 
        
                    this.Visible = true;                 button1_Click(null, null); 
            } 
          }