Delphi - aplikácia bez GUI - ako na to?
Chcel by som urobiť program na logovanie času zapnutia počítača. Malo by to bežať na pozadí ako proces bez okna aplikácie, to znamená, že nechcem, aby sa zobrazovala aplikácia dole na lište. Nebudem teda vytvárať okno aplikácie. Lenže dá sa niečo také vôbec napísať? Mal by som vlastne len súbor DPR bez knižníc (PAS, DFM), čiže formulárov. Ako budem potom testovať správu na ukončenie aplikácie, čiže udalosť OnCloseQuery?
V menu File / New / Other si vyberes Console application
V DPR pak smazes {APP_TYPE_CONSOLE}
Pak budes mit aplikaci bez okna na hlavnim panelu.
Ale tyhle veci se normalne resi jako sluzba (TService), protoze takova aplikace nema zpracovani zprav.
Dalsi vec je, zda na to psat aplikaci, prooze tyt veci muzes logovat pres klasicky EventLog, staci to nastavit pres politiky.
Tiež som myslel na to, že služba je výhodnejšia v tomto prípade. Vedel by si mi poradiť ako takú službu vytvoriť?
Nie je možné to riešiť cez EventLog, pretože chcem detekovať aj hibernáciu alebo akýkoľvek stav nečinnosti procesora a to sa tam nenachádza. Detekovať to chcem porovnávaním času Windows s časom hodín.
Menu File / New / Service nebo Service application
Myslis, ze je vhodne to detekovat pomoci hodin? Neni lepsi proste prijimat zpravy Windows?
Pri prechode do režimu S1 dostaneš správu?
Zkus se podivat na WM_POWERBROADCAST
http://msdn2.microsoft.com/en-us/library/aa373247.a spx
Ak nemas okno nemozes ani dostat ziadnu spravu (spravy sa posielaju pod win len oknam).
Da sa to tak ze okno aplikacie nezobrazis, alebo uplne inac ze napises sluzbu so specialnym rozhranim pre sluzby (vyzaduje nastudovat si patricne sekcie z MSDN prip. mozno aj z DDK)
Mám vlastne jednoduchý zápis služby. Neivem ako to spustiť, prípadne, čo tomu ešte chýba. Tiež by ma zaujímalo, či opakované spúšťanie metódy Execute zabezpečí systém alebo si to musím zabezpečiť sám pomocou TTimer. Myslím, že s tým súvisí vlastnosť WaitHint.
Ked nieco nevies, tak si to najdi v MSDN, to je standardny postup.
P.S. Aby si nepovedal ze som svina nasiel som ti v tom MS bordeli ze kde sa pojednava o services
http://msdn2.microsoft.com/en-us/library/ms685141.a spx
mas tam about services, using services, reference, about je vzdy vseobecny pokec (ako to funguje), using ze ako sa to pouziva, reference je zoznam funkcii/struktur atd.
P.S.2. prip ak pouzivas nejaky medziclanok (ten class TService apod tak si pozri pokec o nom alebo zdrojak, a ak je to bez pokecu tak nepouzivaj Delphi nechapem ako moze niekto nieco pouzivat bez toho aby mal o tom informacie).