Citat:
marko1981: Mozes jednostavno da pratis vreme stvarnog koriscenja aplikacije.
Pogledas koliko je sati prilikom startovanja i prilikom gasenja aplikacije, oduzmes pa saberes na ukupni rezultat koji bi "negde" pamtio.
Koliko stvarno vreme koriscenja aplikacije odgovara periodu od na primer 6 meseci, zavisi od vrste aplikacije.
Mozes kao sto je gore navedeno, ali ne da sabiras vreme koriscenja aplikacije, vec zapamtis kad se aplikacija startovala i kada se ugasila. Pri unosu licence Key-a zapamtis FIRST START, recimo "FIRST START: 12.12.2008 12:10" To ti je sad referentni datum, pomocu kojeg proveravas da li je licenca istekla. Takodje zautomatski postavis da je START veci za sekundu od FIRST START-a i STOP da je sekund veci od START-a kao pocetne vrednosti.
Pri svakom startu radis proveru da li je trenutno vreme manje ili jednako vremenu gasenja,
Code:
if (Now<= STOP)
{
//stopiras rad aplikacije, neko je menjao vreme
}
ako jeste onda proveris da li je LICENCNIPERIOD prosao od FIRST START-a
Code:
if (FIRSTSTART>= FIRSTSTART+ [LICENCNIPERIOD])
{
//stopiras rad aplikacije, neko je menjao vreme
}
ako nije, postavis vreme START na trenutno i pustis aplikaciju.
Dok je aplikacija aktivna proveravas da li je Windows poslao WM_TIMECHANGE ako neko menja vreme izbacis mu "Neovlasceno ste menjali vreme, obrati te se [
[email protected]]" blokiras mu program i omogucis samo unos licence. Kad se obrati tebi, ti imas evidenciju kod sebe da li mu je licenca istekla ili nije ako jeste das mu novi kljuc za onoliko vremena koliko mu je jos ostalo :) Unos novog kljuca resetuje ceo mehanizam samo sad ce LICENCNIPERIOD biti manji za onoliko koliko je vec iskoristio :)
Ako je sve ok sa vremenom, na gasenju aplikacija ponovo zapamtis trenutno vreme i tako do isteka licence:)
U najgorem slucaju tvoj program ce biti efektivno koriscen 6 meseci (ako je licenca 6 meseci) ukoliko neko provali ovaj sistem i svaki put na startu aplikacije vraca vreme na recimo minut vise od zadnjeg gasenja, medjutim ako je u aplikaciji igde potrebno tacno vreme, nece mu se ovo isplatiti da radi. I ako samo jednom pogresi u proceduri vracanja vremena taman da bude malo vece od vremena kda je zadnji pt ugasena aplikacija, blokiras program i nema mu spasa :)
Nadam se da sam bio jasan, postoji mogucnost da nisam sagledao sve aspekte ovog problema, ali meni deluje da ovo moze da prodje, ukoliko je neka recimo racunovodstvena aplikacija. Ako neko ima neku primendbu, rado bi zeleo da cujem.
Shoot for the moon. Even if you miss, you'll land among the stars.
Les Brown