Fungsi SendMessage (winuser.h)
Mengirim pesan yang ditentukan ke jendela atau jendela. Fungsi SendMessage memanggil prosedur jendela untuk jendela yang ditentukan dan tidak kembali sampai prosedur jendela telah memproses pesan.
Untuk segera mengirim pesan dan kembali, gunakan fungsi SendMessageCallback atau SendNotifyMessage . Untuk memposting pesan ke antrean pesan utas dan segera kembali, gunakan fungsi PostMessage atau PostThreadMessage .
Sintaks
LRESULT SendMessage(
[in] HWND hWnd,
[in] UINT Msg,
[in] WPARAM wParam,
[in] LPARAM lParam
);
Parameter
[in] hWnd
Jenis: HWND
Handel ke jendela yang prosedur jendelanya akan menerima pesan. Jika parameter ini HWND_BROADCAST ((HWND)0xffff), pesan dikirim ke semua jendela tingkat atas dalam sistem, termasuk jendela yang tidak berwujud yang dinonaktifkan atau tidak terlihat, jendela tumpang tindih, dan jendela pop-up; tetapi pesan tidak dikirim ke jendela anak.
Pengiriman pesan tunduk pada UIPI. Utas proses hanya dapat mengirim pesan ke antrean pesan utas dalam proses tingkat integritas yang lebih rendah atau sama dengan.
[in] Msg
Jenis: UINT
Pesan yang akan dikirim.
Untuk daftar pesan yang disediakan sistem, lihat Pesan yang Ditentukan Sistem.
[in] wParam
Jenis: WPARAM
Informasi khusus pesan tambahan.
[in] lParam
Jenis: LPARAM
Informasi khusus pesan tambahan.
Nilai kembali
Jenis: LRESULT
Nilai yang dikembalikan menentukan hasil pemrosesan pesan; itu tergantung pada pesan yang dikirim.
Keterangan
Ketika pesan diblokir oleh UIPI, kesalahan terakhir, diambil dengan GetLastError, diatur ke 5 (akses ditolak).
Aplikasi yang perlu berkomunikasi menggunakan HWND_BROADCAST harus menggunakan fungsi RegisterWindowMessage untuk mendapatkan pesan unik untuk komunikasi antar aplikasi.
Sistem hanya melakukan marshalling untuk pesan sistem (yang berada dalam rentang 0 hingga (WM_USER-1)). Untuk mengirim pesan lain (yang >= WM_USER) ke proses lain, Anda harus melakukan marshalling kustom.
Jika jendela yang ditentukan dibuat oleh utas panggilan, prosedur jendela segera dipanggil sebagai subroutine. Jika jendela yang ditentukan dibuat oleh utas yang berbeda, sistem beralih ke utas tersebut dan memanggil prosedur jendela yang sesuai. Pesan yang dikirim di antara utas hanya diproses ketika utas penerima menjalankan kode pengambilan pesan. Utas pengirim diblokir hingga utas penerima memproses pesan. Namun, utas pengirim akan memproses pesan masuk yang tidak diantrekan sambil menunggu pesannya diproses. Untuk mencegah hal ini, gunakan SendMessageTimeout dengan set SMTO_BLOCK. Untuk informasi selengkapnya tentang pesan yang tidak diantrekan, lihat Pesan Tanpa Antrean.
Aplikasi aksesibilitas dapat menggunakan SendMessage untuk mengirim pesan WM_APPCOMMAND ke shell untuk meluncurkan aplikasi. Fungsionalitas ini tidak dijamin berfungsi untuk jenis aplikasi lain.
Contoh
Misalnya, lihat Menampilkan Input Keyboard.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung | Windows 2000 Professional [hanya aplikasi desktop] |
Server minimum yang didukung | Windows 2000 Server [hanya aplikasi desktop] |
Target Platform | Windows |
Header | winuser.h (termasuk Windows.h) |
Pustaka | User32.lib |
DLL | User32.dll |
Set API | ext-ms-win-ntuser-message-l1-1-0 (diperkenalkan dalam Windows 8) |
Lihat juga
Konseptual
Referensi