WM_QUERYENDSESSION pesan
Pesan WM_QUERYENDSESSION dikirim ketika pengguna memilih untuk mengakhiri sesi atau ketika aplikasi memanggil salah satu fungsi pematian sistem. Jika ada aplikasi yang mengembalikan nol, sesi tidak berakhir. Sistem berhenti mengirim pesan WM_QUERYENDSESSION segera setelah satu aplikasi mengembalikan nol.
Setelah memproses pesan ini, sistem mengirim pesan WM_ENDSESSION dengan parameter wParam yang diatur ke hasil pesan WM_QUERYENDSESSION .
Jendela menerima pesan ini melalui fungsi WindowProc-nya .
LRESULT CALLBACK WindowProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // not used
LPARAM lParam // logoff option
);
Parameter
-
hwnd
-
Handel ke jendela.
-
uMsg
-
Pengidentifikasi WM_QUERYENDSESSION .
-
wParam
-
Parameter ini dicadangkan untuk digunakan di masa mendatang.
-
lParam
-
Parameter ini bisa menjadi satu atau beberapa nilai berikut. Jika parameter ini adalah 0, sistem akan dimatikan atau dimulai ulang (tidak dimungkinkan untuk menentukan peristiwa mana yang terjadi).
Nilai Makna - ENDSESSION_CLOSEAPP
- 0x00000001
Aplikasi ini menggunakan file yang harus diganti, sistem sedang dilayankan, atau sumber daya sistem habis. Untuk informasi selengkapnya, lihat Panduan untuk Aplikasi. - ENDSESSION_CRITICAL
- 0x40000000
Aplikasi dipaksa untuk dimatikan. - ENDSESSION_LOGOFF
- 0x80000000
Pengguna sedang keluar. Untuk informasi selengkapnya, lihat Pengelogan Nonaktif. Perhatikan bahwa parameter ini sedikit masker. Untuk menguji nilai ini, gunakan operasi yang sedikit bijaksana; jangan menguji kesetaraan.
Nilai kembali
Aplikasi harus menghormati niat pengguna dan mengembalikan TRUE. Secara default, fungsi DefWindowProc mengembalikan TRUE untuk pesan ini.
Jika mematikan akan merusak sistem atau media yang sedang dibakar, aplikasi dapat mengembalikan FALSE. Namun, adalah praktik yang baik untuk menghormati tindakan pengguna.
Keterangan
Ketika aplikasi mengembalikan TRUE untuk pesan ini, aplikasi menerima pesan WM_ENDSESSION , terlepas dari bagaimana aplikasi lain merespons pesan WM_QUERYENDSESSION . Setiap aplikasi harus segera mengembalikan TRUE atau FALSE setelah menerima pesan ini, dan menugaskan operasi pembersihan apa pun sampai menerima pesan WM_ENDSESSION .
Aplikasi dapat menampilkan antarmuka pengguna yang meminta informasi kepada pengguna saat dimatikan, namun tidak disarankan. Setelah lima detik, sistem menampilkan informasi tentang aplikasi yang mencegah pematian dan memungkinkan pengguna untuk mengakhirinya. Misalnya, Windows XP menampilkan kotak dialog, sementara Windows Vista menampilkan layar penuh dengan informasi tambahan tentang aplikasi yang memblokir pematian. Jika aplikasi Anda harus memblokir atau menunda penonaktifan sistem, gunakan fungsi ShutdownBlockReasonCreate . Untuk informasi selengkapnya, lihat Mematikan Perubahan untuk Windows Vista.
Aplikasi konsol dapat menggunakan fungsi SetConsoleCtrlHandler untuk menerima pemberitahuan matikan.
Aplikasi layanan dapat menggunakan fungsi RegisterServiceCtrlHandlerEx untuk menerima pemberitahuan matikan dalam rutinitas handler.
Contoh
Misalnya, lihat Pengelogan Nonaktif.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung |
Windows XP [aplikasi desktop | Aplikasi UWP] |
Server minimum yang didukung |
Windows Server 2003 [aplikasi desktop | Aplikasi UWP] |
Header |
|
Lihat juga