نقل قول نوشته شده توسط newgoldenman مشاهده تاپیک
به به!
خدا رو شكر. بالاخره خودم به جواب رسيدم.
خيلي ساده و دقيقاً به همون سادگي كه فكرشو ميكردم. اينم نمونه كد براي كساني كه دوست دارند از اين روش استفاده كنند:

public partial class Form1 : Form
{
const int HOTKEY_ID = 31197; //any number to be used as an id within this app
const int WM_HOTKEY = 0x0312;

public enum KeyModifiers //enum to call 3rd parameter of RegisterHotKey easily
{
None = 0,
Alt = 1,
Control = 2,
Shift = 4,
Windows = 8
}
//API Imports
[DllImport("user32.dll", SetLastError = true)]
public static extern bool RegisterHotKey(
IntPtr hWnd, // handle to window
int id, // hot key identifier
KeyModifiers fsModifiers, // key-modifier options
Keys vk // virtual-key code
);

[DllImport("user32.dll", SetLastError = true)]
public static extern bool UnregisterHotKey(
IntPtr hWnd, // handle to window
int id // hot key identifier
);

protected override void WndProc(ref Message msg)
{
// Listen for operating system messages.
switch (msg.Msg)
{
case WM_HOTKEY:
// this is the block the app turns in if the hotkey has been pressed
//so do your f@cking hotkey stuff here :-D
MessageBox.Show("F11 Pressed!");
break;
}
base.WndProc(ref msg);
}
//globalKeyboardHook myHookKeyBoard = new globalKeyboardHook();
public Form1()
{
InitializeComponent();
bool bcheck = RegisterHotKey(Handle, HOTKEY_ID, KeyModifiers.None, Keys.F11);

}
}


از آقاي كشاورز عزيز هم ممنون و سپاسگذارم كه وقت گذاشتند و راه حل معرفي كردند. كه با استفاده از همين چند لغتي كه به لاتين نوشتند، جستجوهاي جديدي كردم و بالاخره به جواب رسيدم: خواستن توانست است.
دقيقاً هم حرف ايشون درست بود. كه هيچ نيازي به هوك كردن نيست و ...

موفق باشيد.
(از مديران ممنون ميشم كه اين تاپيك رو به عنوان "تاپيك به عنوان راه حل انتخاب گرديد!" معرفي كنند.)
سلام
از کدتون ممنون
در قسمت base.WndProc(ref msg); دائم خودش را اجرا میکنه.نمیشه یه طور دیگه نوشتش که فقط موقع زدن کلید میانبر برنامه بیدار بشه.تقریبا مثل thread.sleep , thread.wakeup
سوال دیگه اینکه برای تعریف چند کلید میانبر که با زدن هر کدوم کار مشخصی را انجام بده.
من کلید ها را تعریف کردم ولی در قسمت switch (msg.Msg) من case WM_HOTKEY2 هم تعریف کردم ولی هر بار فقط case WM_HOTKEY اجرا میشه و case WM_HOTKEY2 اجرا نمیشه


const int HOTKEY_ID = 31197; //any number to be used as an id within this app

const int HOTKEY2_ID = 31198; //any number to be used as an id within this app

const int WM_HOTKEY = 0x0312;

const int WM_HOTKEY2 = 0x0313;

//***********************************

bool bcheck = RegisterHotKey(Handle, HOTKEY_ID, KeyModifiers.Alt, Keys.Oemcomma);
bool bcheck2 = RegisterHotKey(Handle, HOTKEY2_ID, KeyModifiers.Alt, Keys.OemQuestion);