Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

da li se windows gasi/logofuje?

[es] :: Pascal / Delphi / Kylix :: da li se windows gasi/logofuje?

[ Pregleda: 1359 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Jedan je Shiver

Član broj: 47375
Poruke: 20
89.216.54.*



Profil

icon da li se windows gasi/logofuje?14.10.2009. u 11:24 - pre 177 meseci
Zdravo,
Danima pokusavam da se izborim sa problemom oko logofovanja.
Interesuje me da li postoji winapi funkcija sa kojom mogu da proverim da li se windows gasi ili se logofuje. Probao sam da uhvatim poruku WM_QUERYENDSESSION i WM_ENDSESSION, ali one dolaze previse kasno.
Probao sam raznorazne nacine. Ali ni jedan nije uspeo da urodi plodom...
Jel ima neko neku ideju.

Hvala,
Pozdrav.
 
Odgovor na temu

Jedan je Shiver

Član broj: 47375
Poruke: 20
89.216.54.*



Profil

icon Re: da li se windows gasi/logofuje?14.10.2009. u 11:39 - pre 177 meseci
Stavio sam Pascal / Delphi / Kylix zato sto je aplikacija pisana u Delphi-u.
:)
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: da li se windows gasi/logofuje?14.10.2009. u 13:32 - pre 177 meseci
> Interesuje me da li postoji winapi funkcija sa kojom mogu da proverim da li se windows gasi ili se logofuje. Probao sam da uhvatim poruku
> WM_QUERYENDSESSION i WM_ENDSESSION, ali one dolaze previse kasno.

To je regularan način da se uhvati obaveštenje, još možeš pokušati sa WM_WTSSESSION_CHANGE. Zašto misliš da te poruke dolaze kasno, šta je to što tačno pokušavaš da uradiš?

 
Odgovor na temu

Jedan je Shiver

Član broj: 47375
Poruke: 20
89.216.54.*



Profil

icon Re: da li se windows gasi/logofuje?14.10.2009. u 15:33 - pre 177 meseci
WM_WTSSESSION_CHANGE radi samo za remote desktop. Kad se uradi kulturan logoff, ne dolazi do genersianja poruke.

Ovako, imam tri modalne forme. glavna forma ima hookovan Message loop sa
Application.HookMainWindow(HookProc);
u kojoj se handluju sve poruke na nivou aplikacije.
Svaka sem poslednje ima obradjenu metodu za formCloseQuery. VCL kad dobije WM_QUERYENDSESSION prvo posalje formCloseQuery pa tek onda poruku WM_QUERYENDSESSION, i tako za sve otvoreno prozore.
Tako da mi se poslednja forma ugasi, srednja dobije formCloseQuery, koji ispucava messageBox. Tako da do glavne forme (odnosno do HookProc-a ) ne stinge u opste WM_QUERYENDSESSION.

Ne bi da hvatam za svaku formu WM_QUERYENDSESSION, posto ih ima mnogo. Probao sam da naprvim thread koji ce da hvata sve poruke koje aplikacija dobije, ali cim otvorim neku novu formu, thread vise ne dobija message...
 
Odgovor na temu

Jedan je Shiver

Član broj: 47375
Poruke: 20
89.216.54.*



Profil

icon Re: da li se windows gasi/logofuje?14.10.2009. u 16:53 - pre 177 meseci
Jel postoji nacin da se utvrdi da li je forma dobila formCloseQuery ugasena zbog WM_QUERYENDSESSION ili je user kliknuo na x?
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: da li se windows gasi/logofuje?14.10.2009. u 17:44 - pre 177 meseci
> WM_WTSSESSION_CHANGE radi samo za remote desktop. Kad se uradi
> kulturan logoff, ne dolazi do genersianja poruke.

Moraš pozvati WTSRegisterSessionNotification prethodno, radi i ne samo kod RD, ali se ne sećam da li se generišu poruke kod regularnog gašenja
ili samo kod fast user switchinga.

> Ovako, imam tri modalne forme. glavna forma ima hookovan Message loop sa Application.HookMainWindow(HookProc); u kojoj se handluju sve poruke
> na nivou aplikacije.

> Svaka sem poslednje ima obradjenu metodu za formCloseQuery. VCL kad dobije WM_QUERYENDSESSION prvo posalje formCloseQuery pa
> tek onda poruku WM_QUERYENDSESSION, i tako za sve otvoreno prozore.

Ne, forma prvo dobije WM_QUERYENDSESSION i onda poziva OnCloseQuery, ako želiš da promeniš način na koji se handluje ta poruka možeš
dodati novu metodu svojoj formi npr:
procedure WMQueryEndSession(var Message: TWMQueryEndSession); message WM_QUERYENDSESSION;

> Tako da mi se poslednja forma ugasi, srednja dobije formCloseQuery, koji ispucava messageBox.

Šta znači ispucava messageBox?

> Tako da do glavne forme (odnosno do HookProc-a ) ne stinge u opste WM_QUERYENDSESSION.

Ne shvatam šta treba tvoj program da uradi kada se gasi windows, da se sam ugasi ili nešto više?
Po defaultu OnCloseQuery vraća True, ako želiš da se forma ugasi onda nije ni potrebno da hendluješ taj event.

 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: da li se windows gasi/logofuje?

[ Pregleda: 1359 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.