Dezactivează comenzile ctrl-alt-delete, alt-tab, start și alte combinații

Aceasta este o traducere gratuită a articolului din site-ul tamas.io despre oprirea software-ului și includerea cheilor de acces Windows cu C #. Mai recent, eu însumi aveam nevoie de funcții similare în programul meu și am fost surprins să aflu că nu există nimic despre acest lucru în runet, și, în general, rețeaua spune foarte puțin despre asta. Deci, dacă este interesant sau de asemenea aveți nevoie, așa cum eram - bine ați venit!







După câteva cercetări privind dezactivarea cheilor și a combinațiilor acestora, am aflat că există mai multe moduri de a schimba comportamentul combo-urilor cheie menționate anterior.

Nu vă faceți griji, nu le vom lua în considerare aici, dar vă voi arăta cum să lucrați cu ei.

Utilizăm capacitățile de editare ale registrului C # pentru a seta / modifica politica de grup pentru secvența de taste CTRL-ALT-DEL. Să vedem ce se poate face fără a scrie o singură linie de cod. Deschideți "Start -> Run" și tastați gpedig.msc. Mergeți la: Configurare utilizator> Șabloane administrative> Sistem> Opțiuni acțiune după ce apăsați CTRL-ALT-DEL (Configurare utilizator> Șabloane administrative> Sistem> Opțiuni CTRL + ALT + DELETE). Acesta este locul unde puteți seta o acțiune în modul standard, care va fi cauzată de apăsarea acestei combo-uri. Faceți dublu clic pe "Eliminați Manager de activități" (Eliminați Manager de activități). Modificarea acestei setări modifică valoarea din SoftwareMicrosoftWindowsCurrentVersionPoliciesSystem și DisableTaskMgr este setată la 1.







Acum sarcina a devenit mai clară.

Important, nu treceți peste această linie:

Metoda pe care am scris-o arată astfel:

Astfel, am avut grijă să modificăm valoarea combinației CTRL-ALT-DEL. Luați în considerare combinațiile rămase. Poate că ar părea dificil, dar este ușor. Cum să dezactivați ALT + F4? Doar 5 linii de cod:

Procedura LowLevelKeyboardProc este o procedură definită de program sau de bibliotecă pentru a apela o funcție care este utilizată împreună cu funcția SetWindowsHookEx. Sistemul numește această funcție de fiecare dată când un eveniment de intrare din tastatură urmează să fie plasat în coada de flux de intrare. Intrarea de la tastatură poate trece prin driver sau prin apeluri către funcția keybdevent. Dacă apelul a avut loc printr-un apel către keybdevent, atunci acesta a fost "injectat". Cu toate acestea, cârligul WHKEYBOARDLL nu este implementat într-un alt proces. În schimb, contextul trece la un alt proces, la care cârligul este instalat și invocat în forma sa originală. Apoi, contextul revine la aplicația care a cauzat acest eveniment.

Și din nou, nu uitați:

Aici tot ce ai nevoie:

Este destul de evident că puteți reveni programatic la toate valorile prin reactivarea tuturor combinațiilor:

De la mine, o voi adăuga în codul .NET4, cum ar fi:

Nu funcționează. Trebuie să scrieți ceva de genul:

Ei bine, în partea de sus a codului structurii AddHooks, printre altele, import:

Sper că traducerea nu sa dovedit a fi foarte rău și va fi folositoare pentru cineva.







Trimiteți-le prietenilor: