Bagikan melalui


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
WinUser.h (termasuk Windows.h)

Lihat juga

Pengelogan Nonaktif

Mematikan

DefWindowProc

ExitWindows

SetProcessShutdownParameters

WM_ENDSESSION