A napokban egyik barátom felvetésére, hogy egy olyan programot keres, amivel lezárhatja a notebook-ja billentyűit, hogy arra papírokat pakolhasson, készítettem egy keyboard locker alkalmazást.
A programot Visual Studio 2010 fejlesztőrendszerrel, C# nyelven készítettem. Ebből adódóan a program .NET alapú, néhány natív rendszerhívással.
A billentyűzet lokkolásának módját egy már régebben C++ -ban készített programomból "loptam". Ott alapvetően a leütött billentyűk naplózása volt a cél, melyre a Windows low level keyboard hook-ját használtam.
A programom ezzel bekerült a billentyűzet eseményfeldolgozásának folyamatába, melybe ezek után bele is tud avatkozni.
A beavatkozás jelen esetben annyit jelentett, hogy az operációs rendszernek visszatérési értékben jelezte, az esemény sikeres feldolgozását, aminek következtében az már nem hozta létre a további alkalmazás szintű eseményeket, vagyis a billentyűzet lényegében magasabb szintről nézve "blokkolva" lett.
A dolog egyetlen komolyabb szépséghibája, hogy a CTRL+ALT+DEL billentyűkombináció továbbra is lekezelődik, azonban ennek megoldásához valószínűleg kernel driver írására lenne szükség, melyet azonban a jelen probléma szempontjából nem tartok szükségesnek.
Ugyanakkor, csak a poén kedvéért, lehet erre rövidesen mégis sortkerítek, és folytatom ezirányú részletesebb ismerkedésemet Visual Studio C++ környezetben. Azon túl, hogy valamiért időnként komolyabb vonzalmat érzek az alacsony szintű kódok (pl assembly, c++) írása irányába, azontúl még fantáziát is látok az ilyen irányú orientálódásban eszköz meghajtók készítése szempontjából.