Tech techline.hu 2008. december. 08. 08:00

Készítsen fényorgonát a billentyűzetéből!

A Num, Caps és Scroll Lock billentyűk lenyomására a billentyűzetünkön felvillan egy kis...

A Num, Caps és Scroll Lock billentyűk lenyomására a billentyűzetünkön felvillan egy kis zöld fény, ezt mindenki tudja. Azt viszont már kevesebben, hogy ezeket a billentyűket akár egy program is le tudja nyomni helyettünk.
Ugorjunk is neki, nyissunk meg egy jegyzettömböt (Start/Minden program/Kellékek/Jegyzettömb), és másoljuk bele az alábbi néhány sort:

Set WshShell = WScript.CreateObject("WScript.Shell")
For i = 0 to 5
 WshShell.SendKeys "{NUMLOCK}"
 WScript.Sleep 60
 WshShell.SendKeys "{CAPSLOCK}"
 WScript.Sleep 60
 WshShell.SendKeys "{SCROLLLOCK}"
 If (i mod 2) Then WScript.Sleep 200
Next

A Fájl/Mentés másként menüponttal rögzítsük úgy a fájlt, hogy a fájlnév helyére a következőt írjuk, idézőjelekkel együtt: "ledvillogtato.vbs". Kapcsoljuk ki manuálisan az éppen aktív lock funkciókat, hogy egyik led se világítson a billentyűzeten! Most futtassuk a létrehozott fájlt!
Háromszor felfutnak a fények egymás után, majd megáll a program. Természetesen a fenti kódot módosítva egyéni villogásokat is készíthetünk, ezért most röviden bemutatjuk, hogyan is működik a program.

Ki gondolná, hogy fényorgonaként is használható

Az első sorral nem kell különösebben foglalkozni. Létrehoz egy shell objektumot, amelyen keresztül billentyűzet-lenyomásokat küldünk a rendszer felé. A következő sorok megértéséhez fontos tudni a felfutó fény elméletét. Valójában a program lenyomja egymás után a három lock gombot, kis késleltetéssel. Ezt a folyamatot 6x megismétli. Első futáskor bekapcsolja a fényeket, a második futásnál kikapcsolja őket és így tovább. Azért kell tehát 3 fényfelfutáshoz 6x fordulni a programnak, mert minden második futás a lekapcsolásról gondoskodik. A második sorban tehát beállítjuk, hogy a következő sorok, amelyek egy kicsit beljebb kezdődnek, hatszor fussanak le (nullától ötig). A for ciklus első utasításával (SendKeys) lenyomtuk a NumLock-ot. A Sleep utasítással vártunk 60 milliszekundumot, majd lenyomtuk a következő billentyűt és így tovább. A ciklus utolsó sorában egy feltétellel találkozunk (If), ami azért kellett, hogy a fényfelfutások között legyen egy kis szünet (200 ms), ne olvadjanak annyira össze. Mivel egy fényfelfutáshoz kétszer kell fordulnia a for ciklusnak, ezért logikus, hogy csak minden második fordulás után kell szünetet tennünk (200 ms). A feltételben szereplő (i mod 2) egy osztás, a for ciklus fordulásainak számát (0,1…5) leosztjuk 2-vel és vesszük a maradékot. Páratlan számok esetén, azaz minden második futáskor a maradék 1 lesz, azaz be kell tenni a 200 milliszekundumos késleltetést. Az utolsó Next utasítás pedig jelzi, hogy véget ért a ciklus.

Hirdetés