2007 Augusztus 10, Péntek 00:55 oda is lehet kattintani :)

NumLock, CapsLock, és ScrollLock kapcsolgatása C#-ból

dátum 2007 Augusztus 10, Péntek 00:55 írta RoliSoft hozzászólások Egy hozzászólás kategória Programozás


Google AdSense Reflection

img/blog/lockdance.pngIgazá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


Hozzászólások listázása növekvő vagy csökkenő sorrendben.


 
Gravatar
véleménye 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... grimasz

Raktam formázást a kódodra! - RoliSoft


Szólj hozzá





5

BBKódok feldolgozása az üzenetben Grimaszok lecsérélése képekre

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!