من از کد زیر استفاده میکنم دوست عزیز.
کافیه فقط توی فرم اصلیتون ازش استفاده کنید. توی کل پروژتون اعمال میشه.

[System.Runtime.InteropServices.DllImport("user32.d ll", SetLastError = true)]
public static extern bool RegisterHotKey(
IntPtr hWnd,
int id,
KeyModifiers fsModifiers,
Keys vk
);
[System.Runtime.InteropServices.DllImport("user32.d ll", SetLastError = true)]
public static extern bool UnregisterHotKey(IntPtr hWnd, int id );
const int HOTKEY_ID = 31197; //کد منحصر به فرد دلخواه برای تعریف کلید میانبر
public enum KeyModifiers
{
None = 0,
Alt = 1,
Control = 2,
Shift = 4,
Windows = 8
}


public bool setHotKey(KeyModifiers Kmds, Keys key)
{
return RegisterHotKey(this.Handle, HOTKEY_ID, Kmds, key);
}


public bool unSetHotKey()
{
return UnregisterHotKey(this.Handle, HOTKEY_ID);
}


const int WM_HOTKEY = 0x0312;


protected override void WndProc(ref Message message)
{
switch (message.Msg)
{
case WM_HOTKEY:
Keys key = (Keys)(((int)message.LParam >> 16) & 0xFFFF);
KeyModifiers modifier = (KeyModifiers)((int)message.LParam & 0xFFFF);


محل نوشتن کد مربوط به زمان فشرده شدن کلید میانبر


break;
}
base.WndProc(ref message);
}


public Form1()
{
InitializeComponent();


setHotKey(KeyModifiers.None, Keys.F1);

}


البته این نکته رو هم بگم که به نظر من راهنمای برنامه رو شما باید یه فایل دیگه در نظر بگیرید و برنامه اصلی رو درگیرش نکنید.