рдПрдХ рдХреБрдВрдЬреА рд╕рдВрдпреЛрдЬрди рдХрд┐рд╕реА рднреА рдХреНрд░рдо рдореЗрдВ рдПрдХ рд╕рд╛рде рджрдмрд╛рдП рдЧрдП рдХреБрдВрдЬреА рдХреА рдХрд┐рд╕реА рднреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдХреЗ рдХреАрдмреЛрд░реНрдб рдЕрдиреБрдорддрд┐ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдкрд╛рдВрдЪ рд╕реЗ рдЕрдзрд┐рдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рдХреЗ рдкрд╛рд╕ рдЧреЗрдорд┐рдВрдЧ рдХреАрдмреЛрд░реНрдб рдирд╣реАрдВ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
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 рдлрд╝рдВрдХреНрд╢рди рд╡реИрд╢реНрд╡рд┐рдХ рдХреНрд▓рд┐рдХ рдЕрд╡рд░реЛрдзрди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ:
рдИрд╡реЗрдВрдЯ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░, рдпрд╣ рдЬрд╛рдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХреБрдВрдЬреА рдХреЛ рджрдмрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд╡рд░реНрддрдорд╛рди рджрдмрд╛рдП рдЧрдП рдХреБрдВрдЬреА рдХреА рдПрдХ рд╕реВрдЪреА рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдПрдХ рд╕рдВрдпреЛрдЬрди рдЪреЗрдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдХреЛрдИ рдореЗрд▓ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЕрд▓рд░реНрдЯ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреНрд▓рд┐рдХ рдЗрдВрдЯрд░рд╕реЗрдкреНрд╢рди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЪрд╛рд▓реВ / рдмрдВрдж рд╣реЛрддрд╛ рд╣реИред
рдХрд╛рд░реНрдпрд╛рддреНрдордХ
рдХрдХреНрд╖рд╛ HotKeysManager
рд╡рд┐рдзрд┐:
- EnableHotKeys / DisableHotKeys - рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХреБрдВрдЬреА рд╕рдВрдпреЛрдЬрди рдЬрд╛рдБрдЪ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ
- AddHotKey (string, HotKeyCombination) - рдХреБрдВрдЬреА рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реБрдП рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рд╕рдВрдпреЛрдЬрди рдЬреЛрдбрд╝реЗрдВ
- AddHotKey (HotKeyCombination) - рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХреБрдВрдЬреА рдкреАрдврд╝реА рдХреЗ рд╕рд╛рде рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрдпреЛрдЬрди рдЬреЛрдбрд╝рдирд╛ (рдХреБрдВрдЬреА Key1 + Key2 + ... + рдХреАрди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрддреНрдкрдиреНрди рд╣реЛрдЧреА)
- RemoveHotKey (рд╕реНрдЯреНрд░рд┐рдВрдЧ) - рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрдпреЛрдЬрди рд╣рдЯрд╛рдПрдВ
- RemoveHotKey (HotKeyCombination) - рд╕рдВрдпреЛрдЬрди рд╣рдЯрд╛рдПрдВ, рдХреБрдВрдЬреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрдЧреА (Key1 + Key2 + ... + Keyn), рдпрджрд┐ рдРрд╕реА рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдВрдпреЛрдЬрди рдирд╣реАрдВ рд╣реИ, рддреЛ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рдлреЗрдВрдХрд╛ рдЬрд╛рдПрдЧрд╛
рдШрдЯрдирд╛рдХреНрд░рдо:
- рдиреНрдпреВрдХреЙрдореНрдмрд┐рдиреЗрд╢рди - рдПрдХ рдирдП рд╕рдВрдпреЛрдЬрди рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ; рдлреЙрд░реНрдо (рд╕реНрдЯреНрд░рд┐рдВрдЧ) {} рдХреЗ рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ Key1 + Key2 + ... + рдХреАрди рдХреЛ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
HookManager рд╡рд░реНрдЧ (рд╕реНрдерд┐рд░ рд╡рд░реНрдЧ)
рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:
- рдХрд░рдВрдЯ -рдХреА-рдХреА - рдкреНрд░реЗрд╕ рдХреА рдЧрдИ рд╕реВрдЪреА рдХреА рд╕реВрдЪреА (рд╕реВрдЪреА <рдХреБрдВрдЬреА>)
- рдХрд░реЗрдВрдЯ - рдкреНрд░рдЦреНрдпрд╛рддKeysDescription - рджрдмрд╛рдП рдЧрдП рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ (Key1 + Key2 + ... + Keyn)
рдШрдЯрдирд╛рдХреНрд░рдо:
- ChangeKeyState - рдХреАрд╕реНрдЯреНрд░реЛрдХреНрд╕ рдХреЗ рд╕реЗрдЯ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐
рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ (рд╕реНрд░реЛрдд + bin_x86)рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рдпрд╛рдж рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд░реВрдкрд╛рдВрддрд░рдг рд╡реИрд╢реНрд╡рд┐рдХ рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреА рд╕рдХреНрд░рд┐рдп рд╡рд┐рдВрдбреЛ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдВрдЪ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред