Помогите: Вот контрол на C#: namespace HotKey{ public class HotKey{ [System.Runtime.InteropServices.DllImport("user32.dll")]static extern System.IntPtr SetWindowsHookEx(int code, HookProc func,System.IntPtr hInstance,int threadID); [System.Runtime.InteropServices.DllImport("user32.dll")]static extern int UnhookWindowsHookEx(System.IntPtr hhook); [System.Runtime.InteropServices.DllImport("user32.dll")]static extern int CallNextHookEx(System.IntPtr hhook, int code,System.IntPtr wParam,System.IntPtr lParam); [System.Runtime.InteropServices.DllImport("user32.dll")]static extern int GetAsyncKeyState(int vKey); protected delegate int HookProc(int code,System.IntPtr wParam, System.IntPtr lParam); static System.IntPtr HookH=System.IntPtr.Zero; static System.Windows.Forms.NotifyIcon TrayIcon=new System.Windows.Forms.NotifyIcon(); static System.Windows.Forms.ContextMenu TrayMenu=new System.Windows.Forms.ContextMenu(); static void Main() { TrayMenu.MenuItems.Add("Выход",new System.EventHandler(Exit_Click)); TrayIcon.Icon=new System.Drawing.Icon("App.ico"); TrayIcon.ContextMenu=TrayMenu; TrayIcon.Text="Горячие клавиши"; TrayIcon.Visible=true; HookH=SetWindowsHookEx(2,new HookProc(Hook),System.IntPtr.Zero,System.AppDomain.GetCurrentThreadId()); System.Windows.Forms.Application.Run(); UnhookWindowsHookEx(HookH);} static void Exit_Click(System.Object sender,System.EventArgs e){ TrayIcon.Visible=false; System.Windows.Forms.Application.Exit();} static int Hook(int code,System.IntPtr wParam, System.IntPtr lParam){ System.Windows.Forms.MessageBox.Show("key"); return CallNextHookEx(HookH, code, wParam, lParam);}}} Все вроде равильно, а хук не работает (проверте). Как заставить его работать (без форм). Я прорбовал седлать вызов SetWindowHookEx на выбор пункта меню в трее (вместо вызова Aplication.exit() ) работает... Или может кто знает как сделать функцию, которая вызывалась бы после Application.Run() и один раз... Типа Form.Load но без формы... Файл HotKey.cs в архиве: http://www.nptus.ru/~doomsday/HotKey.zip (724 байта) И пример по SetWindowsHookEx из MSDN: http://www.nptus.ru/~doomsday/CuttingEdge.zip
Ответить
|