
NumLock, CapsLock, és ScrollLock kapcsolgatása C#-ból
2007 Augusztus 10, Péntek 00:55
RoliSoft
Egy hozzászólás
Programozás
Igazából a cím csak a tartalom felétől lesz megfelelő, ugyanis jön egy kis bevezető.
Ahhoz hogy NumLock-ot meg egyéb gombokat kapcsolgathassunk, legjobb módszer ha azt meg is nyomjuk, csak épp szoftveresen. C#-ben ezt úgy lehet elérni, hogy Windows API hívásokkal dobálózunk és a user32.dll rendszerfájlnak használjuk a keybd_event függvényét.
Hogy ezt elérhessük, (user32 -> keybd_event) a következő kóddal kell bővíteni a kódot:
[DllImport("user32", ExactSpelling = true, CharSet = CharSet.Ansi, SetLastError = true)]
private static extern void keybd_event(byte bVk, byte bScan, long dwFlags, long dwExtraInfo);
Most, hogy meg van ez is, a következő lépés a használt gombok definiálása lesz:
const int VK_NUMLOCK = 0x90;
const int VK_SCROLL = 0x91;
const int VK_CAPITAL = 0x14;
const int KEYEVENTF_KEYUP = 0x02;
A neveket, és a hozzátartozó értékeket innen lehet kinézni.
Most pedig már lehet szoftveresen leütni a billentyűket:
keybd_event(VK_NUMLOCK, 0x45, 0, 0);
keybd_event(VK_NUMLOCK, 0x45, KEYEVENTF_KEYUP, 0);
Ez a fenti kód lenyomja a NumLock billentyűt, majd elengedi, így elérve azt, ami akkor történik ha a billentyűzeten ütnénk meg a NumLock billentyűt.
Ez egy gyors bemutató volt, hogy hogy lehet Windows API hívásokat csinálni C#-ból. Akk részletesebben szeretné tanulmányozni a Windows API hívásait, az a pinvoke.net oldalra tessékeljen, ott meg szépen fel vannak boncolva fájlok, és a bennük meghívható függvények.
Easter Egg-ként (?!?) írtam egy kis haszontalan alkalmazást, ami a NumLock, CapsLock, és ScrollLock billentyűket nyomogatja (lásd. első kép). Innen tölthető le, és tartalmazza a forrást is.
Hozzászólások
Sony500
Mondjuk Delphiben mindenféle előzetes konstansozás meg minden nélkül ennyi:
GetKeyboardState(KeyState);
if (KeyState[VK_CAPITAL]=0) then begin
Keybd_Event(VK_CAPITAL, 1, KEYEVENTF_EXTENDEDKEY or 0, 0);
Keybd_Event(VK_CAPITAL, 1, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);
end else begin
Keybd_Event(VK_CAPITAL, 0, KEYEVENTF_EXTENDEDKEY or 0, 0);
Keybd_Event(VK_CAPITAL, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);
end;
És átlátható...
ui.: nem tudom, minek raktad be ide ezt a szaros webformsz2-t, amikor összesen 1 azaz egy böngésző támogatja, amit mindössze csak 1%-a az internetezőknek használ... :rolleyes: Ráadásul szerintem miatta nem lehet szép delphfin formázást rakni a kódomra... 
Raktam formázást a kódodra! - RoliSoft
Statisztika
Ez a bejegyzés 66 hete, 6 napja, 10 órája és 50 perce született a programozás kategóriában, és pontosan a 91. itt a sandboxon.
Tartalmaz pontosan 1532 betűt szóközök nélkül, és 286 szót.
Ebben a kategóriában még volt 75 hete, 3 napja, 10 órája és 57 perce egy olyan bejegyzésem hogy Fájl listázás jobb klikkre, aztán 85 hete, 2 napja, 16 órája és 24 perce megfordult a fejemben az is hogy Készíts oldaltérképet a honlapodnak! - II. - Lustáknak, de nem szabad megfeletkezni egy olyan bejegyzésről sem amit 85 hete, 2 napja, 17 órája és 24 perce írtam, és az a címe hogy Készíts lépcsőzetes URL-t a honlapodnak!. De még sok más bejegyzés van ebben a kategóriában, például a 85 hete, 2 napja, 20 órája és 34 perce írt Készíts oldaltérképet a honlapodnak! bejegyzés is ide tartozik!

10 hozzászólás
![Validate my RSS feed [Valid RSS]](img/valid-rss.png)
![Validate my Atom 1.0 feed [Valid Atom 1.0]](img/valid-atom.png)




