рдХреАрд╕реНрдЯреНрд░реЛрдХреНрд╕ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдФрд░ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдмреНрд░реЗрд░реА

рдПрдХ рдХреБрдВрдЬреА рд╕рдВрдпреЛрдЬрди рдХрд┐рд╕реА рднреА рдХреНрд░рдо рдореЗрдВ рдПрдХ рд╕рд╛рде рджрдмрд╛рдП рдЧрдП рдХреБрдВрдЬреА рдХреА рдХрд┐рд╕реА рднреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдХреЗ рдХреАрдмреЛрд░реНрдб рдЕрдиреБрдорддрд┐ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдкрд╛рдВрдЪ рд╕реЗ рдЕрдзрд┐рдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рдХреЗ рдкрд╛рд╕ рдЧреЗрдорд┐рдВрдЧ рдХреАрдмреЛрд░реНрдб рдирд╣реАрдВ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

HotKeysManager manager = new HotKeysManager(); manager.AddHotKey(new HotKeyCombination(() => { MessageBox.Show(", !"); }) { Keys.LControlKey, Keys.H }); 

рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдЬрд╣рд╛рдВ рд╡рд░реНрддрдорд╛рди рджрдмрд╛рдП рдЧрдП рдХреБрдВрдЬреА рдХреЛ рдПрдХ рд╕рдВрдпреЛрдЬрди рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрд╡рдпрдВ рд╕рдВрдпреЛрдЬрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдбреЗрдореЛ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдВрдпреЛрдЬрди рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред
 manager.AddHotKey(new HotKeyCombination(HookManager.CurrentDownedKeys.ToArray(), () => { MessageBox.Show(", !"); })); 


рдЕрдм рдЬрдм рдЖрдк рд╕рдВрдпреЛрдЬрди LeftCtrl + H (рдпрд╛ H + LeftControl) рджрдмрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдПрдХ рд╕реНрд╡рд╛рдЧрдд рдпреЛрдЧреНрдп рд╕рдВрджреЗрд╢ рджреЗрдЦреЗрдВрдЧреЗред

рдХреИрд╕реЗ рдХрд┐рдпрд╛?


рддреАрди WinAPI рдлрд╝рдВрдХреНрд╢рди рд╡реИрд╢реНрд╡рд┐рдХ рдХреНрд▓рд┐рдХ рдЕрд╡рд░реЛрдзрди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ:
 /// <summary> ///       /// </summary> [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] private static extern int CallNextHookEx(int idHook, int nCode, int wParam, IntPtr lParam); /// <summary> ///      /// </summary> [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall, SetLastError = true)] private static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hMod, int dwThreadId); /// <summary> ///     /// </summary> [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall, SetLastError = true)] private static extern int UnhookWindowsHookEx(int idHook); 


рдИрд╡реЗрдВрдЯ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░, рдпрд╣ рдЬрд╛рдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХреБрдВрдЬреА рдХреЛ рджрдмрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд╡рд░реНрддрдорд╛рди рджрдмрд╛рдП рдЧрдП рдХреБрдВрдЬреА рдХреА рдПрдХ рд╕реВрдЪреА рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдПрдХ рд╕рдВрдпреЛрдЬрди рдЪреЗрдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдХреЛрдИ рдореЗрд▓ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЕрд▓рд░реНрдЯ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреНрд▓рд┐рдХ рдЗрдВрдЯрд░рд╕реЗрдкреНрд╢рди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЪрд╛рд▓реВ / рдмрдВрдж рд╣реЛрддрд╛ рд╣реИред

рдХрд╛рд░реНрдпрд╛рддреНрдордХ

рдХрдХреНрд╖рд╛ HotKeysManager

рд╡рд┐рдзрд┐:


рдШрдЯрдирд╛рдХреНрд░рдо:


HookManager рд╡рд░реНрдЧ (рд╕реНрдерд┐рд░ рд╡рд░реНрдЧ)


рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:


рдШрдЯрдирд╛рдХреНрд░рдо:


рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ (рд╕реНрд░реЛрдд + bin_x86)

рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рдпрд╛рдж рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд░реВрдкрд╛рдВрддрд░рдг рд╡реИрд╢реНрд╡рд┐рдХ рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреА рд╕рдХреНрд░рд┐рдп рд╡рд┐рдВрдбреЛ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдВрдЪ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

Source: https://habr.com/ru/post/In140979/


All Articles