HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Internet használati idő mérése


1.rész

Példaprogram letöltése

2608 bájt

Határozott idejű Internet előfizetése van? Havi 10, 25, 50, 100 órát használhatja pótdíj fizetése nélkül? Tudni szeretné, hogy eddig mennyi idő telt el és a szolgáltató nem teszi lehetővé, hogy megnézze? Vagy lehetővé teszi, de Ön azt is szeretné tudni, hogy a hálózat gépein egyenként mennyit Internetezett vagy melyik felhasználó mennyit használta? Tisztán a Windows lehetőségeit kihasználva bemutatjuk, hogy lehet mérni az időt, az eredményt fájlba írjuk és havi statisztikát készítünk belőle, így visszanézhetők az elmúlt havi adatok is. A működés független a technikai feltételektől, egyaránt használható analóg modemes, ISDN, ADSL vagy más esetben.

Cikkünkhöz mellékeltük az alábbi szkriptet "Dial.vbs" néven. Futtatása előtt a "Connect" változóba írjuk be a feltárcsázandó hálózati kapcsolat nevét, a "UserName"-be a hozzá tartozó bejelentkezési nevet, végül a "Password"-be a jelszót.
Sokak rendelkeznek határozott idejű Internet kapcsolattal, ami az előfizetés függvényében egy bizonyos óraszámot jelent havonta. Túllépés esetén általában percenkénti összeget számláz a szolgáltató. Mindannyian tudjuk, hogy szörfözés közben gyorsan szalad az idő és bizony könnyen ki lehet csúszni a keretből. A szolgáltatók általában lehetővé teszik (de csak általában), hogy saját honlapjukon bejelentkezés után megtekintsük hogy állunk. Ennek egyetlen hátulütője van: amíg ezt nézzük, addig is telik az idő... És mi van, ha a hálózatunk több gépéről érjük el a világhálót? A szolgáltató csak az összes időt méri, azt nem áll módjában megmondani, hogy hány gép, milyen időbontásban alkotja az összeget.
Számos shareware és freeware program létezik a használati idő mérésére és statisztikák készítésére. Egy részük időkorlátos és pénzbe kerül, más részük Windows XP alatt használhatatlan, a maradék ingyenes és XP alatt is működik - csak meg kell találni. Ha sikeresen rábukkantunk a megfelelő alkalmazásra remek kis segédeszközt kaphatunk kézhez, ami valószínűleg többet tud, mint az alábbi módszer, de minek keresgélni és telepíteni, ha minden megvan a Windows-ban, csak használni kell?
Bontsuk két részre a dolgot: írjunk egy VBScript-et, amivel kiépítjük és megszüntetjük a kapcsolatot a szolgáltatóval, mérjük a kettő közötti időt és az eredményt fájlba rögzítjük. Írjunk egy másikat az eredmény havi bontásban történő feldolgozására (a következő részben fogjuk tárgyalni).
Problémák néhány vírusirtóval
Egyes vírusirtók blokkolják a szkript tevékenységeket, történetesen az írási és programfuttatási műveleteket. Ez érvényes minden szkriptre, amely egy másik programot akar elindítani vagy bármilyen adatot írni a merevlemezre. A zökkenőmentes futtatáshoz ki kell kapcsolni a vírusirtók ezen funkcióját, jobb esetben beállítható, hogy csak a mi szkriptünk ellenőrzése maradjon ki.
Előkészületek
Mielőtt nekilátnánk hozzunk létre egy betárcsázó kapcsolatot. A Vezérlőpult > (Hálózati és internetes kapcsolatok) > Hálózati kapcsolatok (Control Panel > (Network and Internet Connections) > Network Connections) mappában szerepelnie kell egy Internet elérést megvalósító kapcsolatnak.
Kapcsolat létrehozás, bontása és az idő mérése
Lássuk tehát az első szkriptünket: feladata, hogy betárcsázzon az Internet szolgáltatóhoz, mérje a kapcsolódás alatti időt és bontsa a vonalat. Hogy lehet betárcsázni? Nagyon egyszerűen: meg kell hívni a parancssori RASDIAL.EXE segédprogramot. Paraméterként át kell adni a vezérlőpult fent említett kapcsolatának nevét, a bejelentkezéshez szükséges jelszót és felhasználói nevet. Hiába írjuk be és mentjük el a nevet és jelszót a vezérlőpult tárcsázójának megfelelő helyére, a RASDIAL nem vesz róla tudomást - neki külön is meg kell adni. Nézzünk egy példát:
rasdial Internet valaki pass123
Ahol az "Internet" a kapcsolat neve, a "valaki" a felhasználói név és a "pass123" a jelszó.
A vonal bontása a "disconnect" kapcsolóval lehetséges:
rasdial /disconnect
Most már tényleg következzen a szkript:
Elsőként tároljuk el a kapcsolat kiépítéséhez szükséges adatokat. Így később egy esetleges módosítás alkalmával nem kell végigböngészni a teljes szkriptet, hanem itt az elején jól látható helyen el tudjuk végezni a szükséges változtatásokat. A "Connect" változóban tároljuk el a vezérlőpult meghívandó kapcsolatának nevét, a "UserName"-be a bejelentkezési nevet és a "Password"-be a jelszót.
Connect = "Internet"
UserName = "valaki"
Password = "pass123"
A megadott adatok segítségével indítsuk el a RASDIAL-t, használjuk erre a célra a "Run" utasítást. A 0 (nulla) paraméter utasítja a Windows-t, hogy a programhoz tartozó ablakot ne jelenítse meg, hanem a háttérben futtassa az alkalmazást, semmi szükségünk egy megjelenő és eltűnő parancssori ablakra, amivel a RASDIAL meghívása jár.
Felmerül egy probléma: mikortól mérjük a kapcsolati időt? Nem a tárcsázás kezdetétől, hanem a bejelentkezéstől. Igen ám, de egy analóg modemnél ez 30-45 másodpercig is eltarthat, a "Run" metódus elindítja a RASDIAL-t és mint aki jól végezte a dolgát már adja is tovább a vezérlést a szkript következő sorának. Szerencsére van megoldás egy opcionális logikai paraméter formájában. Ha értékét "True"-ra állítjuk, addig nem folytatódik a futtatás, amíg a "Run" által elindított program fut. Meg van a RASDIAL-nak azaz előnye, hogy a kapcsolat létrehozása után bejezi a futást és kilép, ez pont kapóra jön.
set shell = WScript.CreateObject("Wscript.Shell")
 Return = shell.Run ("rasdial " & Connect & " " & UserName & " " & Password, 0, True) 
Most már kezdhetjük mérni az időt, tároljuk el az aktuális dátummal együtt a "NetStart" változóba és jelenítsünk meg a képernyőn egy ablakot az "msgbox" függvénnyel. Az ablakban rajzoltassunk ki információs ikont (vbInformation) a 64-es értékű paraméterrel, ebben az állapotban csak egyetlen "OK" gombunk lesz.


NetStart = Now
Text = "Kapcsolat kezdete: " & NetStart
 Result = msgbox (Text + Chr(13) + chr(13) + "Kapcsolat bontása.", 64 , "Internet kapcsolat időmérés")
Csak akkor folytatódik a szkript futása, ha a felhasználó megnyomja az "OK" gombot, bezárva az ablakot. Ekkor bontsuk a vonalat.
set shell = WScript.CreateObject("Wscript.Shell")
 Return = shell.Run ("rasdial /disconnect", 0, True) 
Ha ez is megvan tároljuk el ismét a pillanatnyi időt (NetEnd). A "NetEnd" és a "NetStart" változók különbsége adja meg az Internet használati időt. Hogy tudnánk kiszámolni a különbséget? A "DateDiff" függvénnyel és az eredményt kérjük másodpercben ("s").
NetEnd = Now
DiffADate = DateDiff("s", NetStart, NetEnd)
A másodperceket számoljuk át órává, perccé és másodperccé, majd írassuk ki a képernyőre, hogy a felhasználó tudja, mennyi időt töltött a neten.


Count = DiffADate
   H = Fix (Count/3600)
   Count = Count - H * 3600
   M = Fix (Count/60)
   Count = Count - M * 60
   S = Count
   All= H & " óra " & M & " perc " & S & " másodperc"
   Result = msgbox ("Kapcsolat időtartama:" + chr(13) + All , 64 , "Internet kapcsolat időtartama.")
Végül tároljuk el az időt egy fájlban. Célunk, hogy minden hónap adatai külön állományban legyenek megtalálhatók. A fájlneveket úgy kell megválasztani, hogy egyértelműen utaljanak rá, hogy melyik hónapról tárolnak információt. Legyen a név az aktuális év, egy "-" jel és az aktuális hónap száma, TXT kiterjesztéssel (pl.: 2002-7.txt).
FileName = DatePart ("yyyy", now) & "-" & DatePart ("m", now) & ".txt"
Ellenőrizzük, hogy létezik-e már ilyen fájlnév, ha nem, akkor hozzuk létre (CreateTextFile), ha igen, akkor nyissuk meg (OpenTextFile), majd írjuk bele az időt. Megnyitásnál a 8-as szám jelentése: megnyitás írásra a fájl végén (append). Végül zárjuk le a nyitott állományt (Close).
Set fso = CreateObject("Scripting.FileSystemObject")
 if fso.FileExists (FileName) then
   Set f = fso.OpenTextFile(FileName, 8 , True)
 else
   Set f = fso.CreateTextFile(FileName, True)
 end If
 f.WriteLine DiffADate
 f.Close
Megjegyzés
Ha nem a fenti szkriptet használjuk tárcsázásra, nem valósul meg az idő mérése. Csupán némi fegyelem és megszokás kérdése, hogy következetesek legyünk és mindig a szkripttel tárcsázzunk. Külső időmérő programok sem mérnek, ha nincsenek elindítva.
Tipp
Néhány száz vagy néhány ezer forint felárért lehet programozható gombokat tartalmazó billentyűzetet kapni. Egyik gombját állítsuk rá az első szkriptre a másikat a másodikra (lásd a következő részben). Így egyetlen gombnyomásra betárcsázhatunk és az "OK" gombbal bonthatjuk a kapcsolatot, míg a másik gombbal bármikor megtekinthetjük a havi állást. Természetesen ugyanez parancsikonok segítségével is megvalósítható. A manuális kapcsolatkiépítést ennél jobban nem lehet leegyszerűsíteni - egy kattintás a betárcsázás és egy kattintás a vonalbontás.
A következő - és egyben utolsó - részben a fájlba mentett adatok feldolgozását végző szkriptet tárgyaljuk.

Könyv
Ez a cikk megtalálható ebben a könyvben: Windows Software Offline 2002 évkönyv 447. 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 |