Ctrl-alt-delete, alt-tab, Start рдФрд░ рдЕрдиреНрдп рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛

рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдореБрдлреНрдд рдЕрдиреБрд╡рд╛рдж рд╣реИред рддрд╛рдорд╛рд╕рд┐рдпреЛ рдХреА рдУрд░ рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░рдиреЗ рдФрд░ рд╕реА # рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдВрдбреЛрдЬ рд╣реЙрдЯ рдХреА рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореБрдЭреЗ рдЦреБрдж рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА рдФрд░ рдореБрдЭреЗ рдпрд╣ рдЬрд╛рдирдХрд░ рдЖрд╢реНрдЪрд░реНрдп рд╣реБрдЖ рдХрд┐ RuNet рдореЗрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХрдо рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЕрдЧрд░ рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдпрд╛ рдЖрд╡рд╢реНрдпрдХ рднреА рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдореЗрд░реЗ рд▓рд┐рдП рдерд╛ - рд╕реНрд╡рд╛рдЧрдд рд╣реИ!

рдореИрдВрдиреЗ 2007 рдореЗрдВ рдпрд╣ рд▓реЗрдЦ рд▓рд┐рдЦрд╛ рдерд╛ рдФрд░ рдпрд╣ рдЕрднреА рднреА рд╡реЗрдм рдкрд░ рд╕рд░реНрдл рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕реНрдЯреИрдХрдСрд╡рд░рдлреНрд▓реЛ рдФрд░ рдбреЙрдЯрдиреЗрдЯрд╕реНрдкрд╛рдЗрдбрд░ рд╕рд╣рд┐рдд рд╡рд┐рднрд┐рдиреНрди рдЪрд░реНрдЪрд╛рдУрдВ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдпрд╣ рддрдм рднреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдерд╛ рдФрд░ рд╡рд┐рдВрдбреЛрдЬ 7 рдкрд░ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдЙрд╕ рд╕рдордп рдпрд╣ рдХреЗрд╡рд▓ рд╢рд╛рд░реАрд░рд┐рдХ рд░реВрдк рд╕реЗ рдореМрдЬреВрдж рдирд╣реАрдВ рдерд╛ред
рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдк рдкрдврд╝рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВ, рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдЖрдкрдХреЛ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЖрдк рд╢реИрдХреНрд╖рд┐рдХ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╛ рдордиреЛрд░рдВрдЬрди рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдХреБрдВрдЬрд┐рдпреЛрдВ рдФрд░ рдЙрдирдХреЗ рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдкрд░ рдереЛрдбрд╝рд╛ рд╢реЛрдз рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦрд┐рдд рдХреБрдВрдЬреА рдХреЙрдореНрдмреЛрд╕ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВред

рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВ, рд╣рдо рдЙрдиреНрд╣реЗрдВ рдпрд╣рд╛рдВ рдирд╣реАрдВ рдорд╛рдиреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдореИрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЙрдирдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИред

рд╣рдо CTRL-ALT-DEL рдХреБрдВрдЬреА рдХреНрд░рдо рдХреЗ рд▓рд┐рдП рд╕рдореВрд╣ рдиреАрддрд┐ рдХреЛ рд╕реЗрдЯ / рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП C # рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреА рд╕рдВрдкрд╛рджрди рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдХреЛрдб рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рд▓рд┐рдЦреЗ рдмрд┐рдирд╛ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред "рд╕реНрдЯрд╛рд░реНрдЯ -> рд░рди" рдЦреЛрд▓реЗрдВ рдФрд░ gpedit.msc рдЯрд╛рдЗрдк рдХрд░реЗрдВред CTRL-ALT-DEL (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди> рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХреАрдп рдЯреЗрдореНрдкрд▓реЗрдЯ> рд╕рд┐рд╕реНрдЯрдо> CTRL + ALT + DELETE рд╡рд┐рдХрд▓реНрдк) рджрдмрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди> рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рдЯреЗрдореНрдкрд▓реЗрдЯ> рд╕рд┐рд╕реНрдЯрдо> рд╡рд┐рдХрд▓реНрдк рдкрд░ рдЬрд╛рдПрдВред рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ, рдорд╛рдирдХ рддрд░реАрдХреЗ рд╕реЗ, рдЖрдк рдЗрд╕ рдХреЙрдореНрдмреЛ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдЯреНрд░рд┐рдЧрд░ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред "рдХрд╛рд░реНрдп рдкреНрд░рдмрдВрдзрдХ рдирд┐рдХрд╛рд▓реЗрдВ" рдкрд░ рдбрдмрд▓ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдмрджрд▓рдиреЗ рд╕реЗ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ \ Microsoft \ Windows \ CurrentVersion \ рдиреАрддрд┐рдпрд╛рдБ \ System рдореЗрдВ рдорд╛рди рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдорд╛рди DisableTaskMgr рдорд╛рди 1 рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред

рдЕрдм рдХрд╛рд░реНрдп рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рд╣реИред

рдорд╣рддреНрд╡рдкреВрд░реНрдг, рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рди рдЫреЛрдбрд╝реЗрдВ:

using Microsoft.Win32; 


рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреА рдЧрдИ рд╡рд┐рдзрд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

 public void KillCtrlAltDelete() { RegistryKey regkey; string keyValueInt = "1"; string subKey = @"Software\Microsoft\Windows\CurrentVersion\Policies\System"; try { regkey = Registry.CurrentUser.CreateSubKey(subKey); regkey.SetValue("DisableTaskMgr", keyValueInt); regkey.Close(); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } 


рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдордиреЗ CTRL-ALT-DEL рд╕рдВрдпреЛрдЬрди рдХреЗ рдореВрд▓реНрдп рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рдЦреНрдпрд╛рд▓ рд░рдЦрд╛ред рд╢реЗрд╖ рд╕рдВрдпреЛрдЬрдиреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдпрд╣ рдЖрдкрдХреЛ рдЬрдЯрд┐рд▓ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрд╕рд╛рди рд╣реИред ALT + F4 рдХреЛ рдЕрдХреНрд╖рдо рдХреИрд╕реЗ рдХрд░реЗрдВ? рдХреЛрдб рдХреА рдХреЗрд╡рд▓ 5 рд▓рд╛рдЗрдиреЗрдВ:

 private void Form1_FormClosing(object sender, FormClosingEventArgs e) { e.Cancel = true; base.OnClosing(e); } 


рд╕рдм рдареАрдХ рд╣реИред рдореБрдЭреЗ рдмрд╛рдХреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рдкрдврд╝рдирд╛ рдерд╛ рдФрд░ рдЕрдм рдЙрди рд▓реЗрдЦреЛрдВ рдХреЛ рдирд╛рдо рджреЗрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдореБрдЭреЗ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХреА, рд▓реЗрдХрд┐рди рд╕рднреА рдореЗрдВ рд╕реЗ 15 рдРрд╕реЗ рдереЗ рдЬрд┐рдирдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдереАред рдореИрдВ рдЖрдкрдХреЛ рд╣реБрдХ рдирд╛рдордХ рдПрдХ рд╡рд┐рдзрд┐ рджреВрдВрдЧрд╛ред рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ LowLevelKeyboardProc рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ:

LowLevelKeyboardProc рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдПрдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░-рдкрд░рд┐рднрд╛рд╖рд┐рдд рдпрд╛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ SetWindowsHookEx рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рднреА рдХреЛрдИ рдХреАрдмреЛрд░реНрдб рдЗрдирдкреБрдЯ рдЗрд╡реЗрдВрдЯ рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдХрддрд╛рд░ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рд╣реИ, рддреЛ рд╕рд┐рд╕реНрдЯрдо рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдХреАрдмреЛрд░реНрдб рдЗрдирдкреБрдЯ рдбреНрд░рд╛рдЗрд╡рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╛ рдХреАрдмреЗрдбрд╡реЗрдВрдЯ рдХреЙрд▓реНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдХреЙрд▓ рдХреАрдмреЗрдбрд╡реЗрдВрдЯ рдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реБрдЖ, рддреЛ рдЗрд╕реЗ "рдЗрдВрдЬреЗрдХреНрдЯ" рдХрд┐рдпрд╛ рдЧрдпрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, WHKEYBOARDLL рд╣реБрдХ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╕рдВрджрд░реНрдн рджреВрд╕рд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рд╣реБрдХ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреЗ рдореВрд▓ рд░реВрдк рдореЗрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд┐рд░, рд╕рдВрджрд░реНрдн рдЙрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдиреЗ рдЗрд╕ рдШрдЯрдирд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирд╛ред


рдФрд░ рдлрд┐рд░, рдордд рднреВрд▓рдирд╛:

 using System.Runtime.InteropServices; using System.Security.Principal; using System.Diagnostics; 


рдпрд╣рд╛рдБ рд╕рдм рдХреБрдЫ рд╣реИ рдЬреЛ рдЕрднреА рднреА рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

 [DllImport("user32", EntryPoint = "SetWindowsHookExA", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] public static extern int SetWindowsHookEx(int idHook, LowLevelKeyboardProcDelegate lpfn, int hMod, int dwThreadId); [DllImport("user32", EntryPoint = "UnhookWindowsHookEx", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] public static extern int UnhookWindowsHookEx(int hHook); public delegate int LowLevelKeyboardProcDelegate(int nCode, int wParam, ref KBDLLHOOKSTRUCT lParam); [DllImport("user32", EntryPoint = "CallNextHookEx", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] public static extern int CallNextHookEx(int hHook, int nCode, int wParam, ref KBDLLHOOKSTRUCT lParam); public const int WH_KEYBOARD_LL = 13; /*code needed to disable start menu*/ [DllImport("user32.dll")] private static extern int FindWindow(string className, string windowText); [DllImport("user32.dll")] private static extern int ShowWindow(int hwnd, int command); private const int SW_HIDE = 0; private const int SW_SHOW = 1; public struct KBDLLHOOKSTRUCT { public int vkCode; public int scanCode; public int flags; public int time; public int dwExtraInfo; } public static int intLLKey; public int LowLevelKeyboardProc(int nCode, int wParam, ref KBDLLHOOKSTRUCT lParam) { bool blnEat = false; switch (wParam) { case 256: case 257: case 260: case 261: //Alt+Tab, Alt+Esc, Ctrl+Esc, Windows Key, blnEat = ((lParam.vkCode == 9) && (lParam.flags == 32)) | ((lParam.vkCode == 27) && (lParam.flags == 32)) | ((lParam.vkCode == 27) && (lParam.flags == 0)) | ((lParam.vkCode == 91) && (lParam.flags == 1)) | ((lParam.vkCode == 92) && (lParam.flags == 1)) | ((lParam.vkCode == 73) && (lParam.flags == 0)); break; } if (blnEat == true) { return 1; } else { return CallNextHookEx(0, nCode, wParam, ref lParam); } } public void KillStartMenu() { int hwnd = FindWindow("Shell_TrayWnd", ""); ShowWindow(hwnd, SW_HIDE); } private void Form1_Load(object sender, EventArgs e) { intLLKey = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, System.Runtime.InteropServices.Marshal.GetHINSTANCE(System.Reflection.Assembly.GetExecutingAssembly().GetModules()[0]).ToInt32(), 0); } 

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЖрдк рд╕рднреА рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕рдХреНрд╖рдо рдХрд░рдХреЗ рд╕рднреА рдорд╛рдиреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 public static void ShowStartMenu() { int hwnd = FindWindow("Shell_TrayWnd", ""); ShowWindow(hwnd, SW_SHOW); } public static void EnableCTRLALTDEL() { try { string subKey = @"Software\Microsoft\Windows\CurrentVersion\Policies\System"; RegistryKey rk = Registry.CurrentUser; RegistryKey sk1 = rk.OpenSubKey(subKey); if (sk1 != null) rk.DeleteSubKeyTree(subKey); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { UnhookWindowsHookEx(intLLKey); } 


рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рд▓реЗрдЦ рдХрд╛ рдЖрдирдВрдж рд▓рд┐рдпрд╛ рдФрд░ рдЗрд╕рдореЗрдВ рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдкрд╛рдпрд╛ред рдореИрдВрдиреЗ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рдпрд╣рд╛рдБ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред

рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдореИрдВ рдкреНрд░рдкрддреНрд░ рдХреЗ .NET4 рдХреЛрдб рдореЗрдВ рдЬреЛрдбрд╝ рджреВрдВрдЧрд╛:

 intLLKey = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, System.Runtime.InteropServices.Marshal.GetHINSTANCE(System.Reflection.Assembly.GetExecutingAssembly().GetModules()[0]).ToInt32(), 0); 


рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЖрдкрдХреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛:

 var inst = LoadLibrary("user32.dll").ToInt32(); intLLKey = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, inst, 0); 


рдЦреИрд░, AddHooks рд╕рдВрд░рдЪрдирд╛ рдХреЛрдб рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдпрд╛рдд:

 LoadLibrary: [DllImport("kernel32", SetLastError = true, CharSet = CharSet.Unicode)] public static extern IntPtr LoadLibrary(string lpFileName); 


рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЕрдиреБрд╡рд╛рдж рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЦрд░рд╛рдм рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдФрд░ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╕рд╛рдмрд┐рдд рд╣реЛрдЧрд╛ред
UPD: рддреИрдпрд╛рд░ рдХрд╛рд░реНрдп рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕реЗ рд▓рд┐рдВрдХред

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


All Articles