Windows - Programvezérlés felhasználói beavatkozás nélkül

forráskód letöltése
Naponta végezzük egyes programokkal ugyanazokat a műveleteket? Mindig ugyanarra a gombra, menüpontra kell kattintani? Megtehetjük mindezt szkriptekből automatikusan mintegy makrószerűen. Cikkünkhöz mellékelve megtalálható a példában szereplő szkript "SendKeys.vbs" néven.

A Windows Scripting Host lehetővé teszi, hogy billentyűkombinációkat küldjünk a rendszerbe úgy, mint ha a felhasználó tette volna ugyanezt a billentyűzet segítségével. Szintén mi határozhatjuk meg, hogy melyik alkalmazás fogadja ezeket. Ha ezt nem adjuk meg, akkor a Windows lesz a célpont: például kiléphetünk belőle, stb.

A használandó metódus neve: "SendKeys", szintaxisa:
obj.SendKeys "sztring"
Ahol az "obj" egy "WshShell" objektum a "sztring" pedig az átadandó billentyűkombináció.

Nézzük, hogy melyik billentyűt milyen formában kell megadni (elöl szerepel a billentyű, utána a SendKeys-beli megfelelője):
  • BACKSPACE - {BACKSPACE}, {BS}, vagy {BKSP}
  • BREAK - {BREAK}
  • CAPS LOCK - {CAPSLOCK}
  • DELETE - {DELETE} vagy {DEL}
  • LE KURZOR NYÍL - {DOWN}
  • BAL KURZOR NYÍL - {LEFT}
  • JOBB KURZOR NYÍL - {RIGHT}
  • FEL KURZOR NYÍL - {UP}
  • END - {END}
  • ENTER - {ENTER} vagy ~
  • ESC - {ESC}
  • HELP - {HELP}
  • HOME - {HOME}
  • INSERT - {INSERT} vagy {INS}
  • NUM LOCK - {NUMLOCK}
  • PAGE DOWN - {PGDN}
  • PAGE UP - {PGUP}
  • PRINT SCREEN - {PRTSC}
  • SCROLL LOCK - {SCROLLLOCK}
  • TAB - {TAB}
  • Funkcióbillentyűk F1-F16 - {F1} - {F16}
  • SHIFT - +
  • CTRL - ^
  • ALT - %
Az utolsó három lenyomva tartva működik, tehát egy elküldött ALT és F4 azt eredményezi, hogy az ALT lenyomva tartása mellett lett az F4 lenyomva.
Több egymás utáni lenyomást lehet rövidíteni, például 5 db "A" betűt így is megadhatunk: {A 5}, ügyelve a karakter utáni szóközre.
A PRINT SCREEN - {PRTSC} billentyű, alkalmazásoknak nem adható át.

Írjunk egy példa feladatot: A vágólapon tárolt képet töltsük be az MSPAINT programba és mentsük el MyPic néven.
A következő lépéseket kell megvalósítani:
Helyezzünk a vágólapra egy képet a PRINT SCREEN vagy ALT+ PRINT SCREEN billentyűkkel (ezt kézzel tegyük meg).

Hozzunk létre egy új "Wscript.Shell" objektumot.
set shell = WScript.CreateObject("Wscript.Shell")
Indítsuk el az MSPAINT programot.
 shell.run("mspaint.exe")
Indulás után "untitled - Paint" fejléccel látható, aktivizáljuk ezt az ablakot, hogy biztosan ennek adjuk át a billentyű leütéseket.
 shell.AppActivate "untitled - Paint", true
Mielőtt átadjuk az első billentyűt, várjunk 1 másodpercig, hogy legyen ideje a rendszernek aktívvá tenni az ablakot.
 WScript.Sleep(1000)
A CTRL+V kombinációval lehet beilleszteni a vágólapon lévő képet. Ha a kép nagyobb, mint a beállított bitkép méret, feltesz egy kérdést, hogy szeretnénk-e megnövelni a méretet, a fókusz az "Igen" ("Yes") gombon van, tehát kell egy ENTER-t is ütni. Ha kisebb a kép, mint a bitkép, akkor felesleges az ENTER, de bajt nem okoz.
shell.SendKeys "^v{ENTER}"
A mentés ablak a CTRL+S-re jön elő.
 shell.SendKeys "^s"
A fókusz a beírandó fájlnéven van. Ide írjuk a "MyPic" nevet. Ha nem az alapértelmezett képtároló mappába akarjuk helyezni, megadhatunk elérési utat is (pl.: "d:\xyz\MyPic").
 shell.SendKeys "c:\MyPic"
"Üssünk" ENTERT a mentéshez.
 shell.SendKeys "{ENTER}"
Lépjünk ki az MSPAINT-ből az ALT+F4-el.
 shell.SendKeys "%{F4}"
A Windows Intézővel (Explorer) ellenőrizzük, hogy sikeres volt-e a mentés. Vigyázzunk arra, hogy a különböző nyelvezetű programokban eltérők lehetnek a billentyűkombinációk akkor is, ha ugyanarról az alkalmazásról van szó.