Bagikan melalui


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

InSendMessage

Pesan dan Antrean Pesan

PostMessage

PostThreadMessage

Referensi

RegisterWindowMessage

SendDlgItemMessage

SendMessageCallback

SendMessageTimeout

SendNotifyMessage