Dnia 12-07-2011 o 20:28:18 Radosław Sokół <rsokol@magsoft.com.pl>
napisał(a):
> W dniu 05.07.2011 11:12, Wojciech "Spook" Sura pisze:
>> WM_QUERYENDSESSION
>> http://msdn.microsoft.com/en-us/library/aa376890(v=vs.85).aspx
>>
>> <cytat>
>> The WM_QUERYENDSESSION message is sent when the user chooses to end the
>> session or when an application calls one of the system shutdown
>> functions. If any application returns zero, the session is not
>> ended. The system stops sending WM_QUERYENDSESSION messages as soon as
>> one application returns zero.
>> </cytat>
>>
>> Pozdrawiam -- Spook.
>
> Gratulacje. Znalazłeś sposób, o którym pisałem -- powodujący
> automatyczne zamknięcie komunikatu po kilku/kilkunastu sekun-
> dach od jego pojawienia się.
Bo komunikat trzeba wyświetlić asynchronicznie, a nie synchronicznie.
Jeśli w funkcji obsługującej komunikat wyświetli się wiadomość, to system
nie otrzyma odpowiedzi i będzie dalej zamykał system (przyjmując, że
aplikacja się powiesiła). W momencie otrzymania komunikatu trzeba
uruchomić nowy wątek, który wyświetli wiadomość dla użytkownika, zaś
funkcja powinna zwrócić systemowi zero i zakończyć działanie - wówczas
zamykanie systemu zostanie przerwane.
> Windows od dawna jest na to za sprytny i zabija aplikacje,
> które się "zawieszają" po otrzymaniu WM_QUERYENDSESSION na
> zbyt długo.
>
> Poza tym oczywiście przy domyślnej w Vista/7 hibernacji
> WM_QUERYENDSESSION w ogóle nie jest rozsyłane.
WM_POWERBROADCAST
http://msdn.microsoft.com/en-us/library/Aa373247
Pozdrawiam -- Spook.
-- Używam klienta poczty Opera Mail: http://www.opera.com/mail/Received on Tue Jul 12 22:15:02 2011
To archiwum zostało wygenerowane przez hypermail 2.1.8 : Tue 12 Jul 2011 - 22:42:00 MET DST