HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Folyamatindítás rejtett ablakban


Példaprogram letöltése

2381 bájt

Szkriptekből, programokból indíthatunk más programokat, folyamatokat (processzeket) az operációs rendszerben. Ha azt szeretnénk, hogy ezek ne látszanak a futó programok között, el kell rejtenünk őket. A folyamatlistában ugyan továbbra is jelen lesznek, de sehol máshol nem találkozunk velük. Az alábbiakban készítünk egy VBScript-et, mellyel bemutatjuk egy példán keresztül, hogy lehet a háttérben programokat működtetni.

Cikkünkhöz mellékeltük az alábbiakban tárgyalásra kerülő szkriptet "HiddenProcess.vbs" néven. Futtatásával háttérfolyamatként indítjuk a NOTEPAD.EXE alkalmazást, melynek bezárása CTRL+ALT+DEL hatására megjelenő ablak "Folyamatok" ("Processes") oldalán lehetséges.
A folyamatlistát legegyszerűbben a CTRL+ALT+DEL billentyűkombinációval érhetjük el, ha a megjelenő ablak "Folyamatok" ("Processes") oldalára lépünk. Itt továbbra is látszanak az ablakkal nem rendelkező programok. Látszik mennyi erőforrást használnak fel és leállíthatók. A leállítás egyébként még külön programból lehetséges, lévén, hogy nincs a felhasználói felület felé megjelenésük, nincs hová kattintani. Esetleg magába a programba építhető időzítés, mely a megfelelő feltételek elkövetkeztekor automatikusa kilépteti, de ez nyilván nem valósítható meg minden alkalmazásnál.
Példánkban a NOTEPAD.EXE (Jegyzettömb) programot futtatjuk a háttérben. Tényleg csak a példa kedvéért, hiszen egy szövegszerkesztő programnál egyébként nem sok értelme lenne.
Elsőként létrehozunk egy változót és eltároljuk benne annak a számítógépnek a nevét, amelyiken a NOTEPAD-et indítjuk. A pont (.) a helyi gépet jelenti.
Computer = "."
Létrehozunk egy konstanst "HIDDEN_WINDOW" néven és 12-t adunk neki értéknek (lásd lent).
Const HIDDEN_WINDOW = 12
Kapcsolatot teremtünk a WMI (Windows Management Instrumentation) szolgáltatás \root\cimv2 névterével az előző változóban megadott gépen. Ezen névtér tárolja az alábbiakban meghívásra kerülő osztályokat.
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & Computer & "\root\cimv2")
Mindjárt itt az első: "Win32_ProcessStartup". Feladat egy folyamat indítási konfigurációjának leírása.
Set objStartup = objWMIService.Get("Win32_ProcessStartup")
A "SpawnInstance_" metódus az "SWbemObject" objektumból származik. Az "SWbemObject" WMI hierarchia magasabb szintjén álló objektum, egy egyszerű WMI osztály definícióját vagy objektum példányát jelenti. A "SpawnInstance_" feladata egy új objektumpéldány létrehozása, amit most a "Win32_ProcessStartup"-al teszünk meg. Ez így egy kicsit komplikáltnak tűnik, valójában csak annyiról van szó, hogy készítünk egy új "Win32_ProcessStartup" objektumpéldányt a folyamatok konfigurálására.
Set objConfig = objStartup.SpawnInstance_
Tulajdonképpen egyetlen konfigurációs elemet kell megadni, méghozzá az ablak elrejtését. Erre szolgál a "ShowWindow" tulajdonság, ahová beírjuk a fenti konstansba megadott értéket.
objConfig.ShowWindow = HIDDEN_WINDOW
Szükségünk van a konfiguráción túl egy új folyamat példányra (hogy legyen mit konfigurálni), szintén a \root\cimv2 névtérből
Set objProcess = GetObject("winmgmts:root\cimv2:Win32_Process")
Majd a kettőt összerakva el kell indítani a folyamatot a "Create" metódussal. Paraméterei között az első a futtatandó program neve. Második az esetleges gyermekfolyamatok könyvtárát (elérési útját) jelöli. Jelen esetben ilyen nincs, ezért "null" értéket adunk meg. Harmadik a folyamat konfigurációját leíró objektum neve. Végül az azonosító számát kapjuk vissza egy változóba. Tároljuk el a visszatérési értéket az "errReturn" változóba.
errReturn = objProcess.Create("Notepad.exe", null, objConfig, intProcessID)
Utolsó fázisként dolgozzuk fel a visszatérési értéket. Ha nulla, minden rendben zajlott. Ha nullától elérő számot kapunk, hiba lépett fel.
if errReturn = 0 then
  wscript.Echo "A folyamat elindítva"
 else
  wscript.Echo "Sikertelen indítás. Hibakód: " & errReturn
end if

Cikksorozat

#IDKategóriaCikk címeSorozat
2668WindowsQoS - Quality of Service bemutatása1. rész
2677WindowsQoS - Quality of Service bemutatása2. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Windows Software Offline 2002 évkönyv 764. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |