Bagikan melalui


Fungsi SendMessageTimeoutA (winuser.h)

Mengirim pesan yang ditentukan ke satu atau beberapa jendela.

Sintaksis

LRESULT SendMessageTimeoutA(
  [in]            HWND       hWnd,
  [in]            UINT       Msg,
  [in]            WPARAM     wParam,
  [in]            LPARAM     lParam,
  [in]            UINT       fuFlags,
  [in]            UINT       uTimeout,
  [out, optional] PDWORD_PTR lpdwResult
);

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. Fungsi tidak kembali sampai setiap jendela kehabisan waktu. Oleh karena itu, total waktu tunggu dapat mencapai nilai uTimeout dikalikan dengan jumlah jendela tingkat atas.

[in] Msg

Jenis: UINT

Pesan yang akan dikirim.

Untuk daftar pesan yang disediakan sistem, lihat pesan System-Defined.

[in] wParam

Jenis: WPARAM

Informasi khusus pesan tambahan apa pun.

[in] lParam

Jenis: LPARAM

Informasi khusus pesan tambahan apa pun.

[in] fuFlags

Jenis: UINT

Perilaku fungsi ini. Parameter ini bisa berupa satu atau beberapa nilai berikut.

Nilai Arti
SMTO_ABORTIFHUNG
0x0002
Fungsi kembali tanpa menunggu periode waktu habis berlalu jika utas penerima tampaknya tidak merespons atau "macet."
SMTO_BLOCK
0x0001
Mencegah utas panggilan memproses permintaan lain hingga fungsi kembali.
SMTO_NORMAL
0x0000
Utas panggilan tidak dicegah memproses permintaan lain sambil menunggu fungsi kembali.
SMTO_NOTIMEOUTIFNOTHUNG
0x0008
Fungsi ini tidak memberlakukan periode waktu habis selama utas penerima memproses pesan.
SMTO_ERRORONEXIT
0x0020
Fungsi harus mengembalikan 0 jika jendela penerima dihancurkan atau utas pemiliknya mati saat pesan sedang diproses.

[in] uTimeout

Jenis: UINT

Durasi periode waktu habis, dalam milidetik. Jika pesan adalah pesan siaran, setiap jendela dapat menggunakan periode waktu habis penuh. Misalnya, jika Anda menentukan periode waktu habis lima detik dan ada tiga jendela tingkat atas yang gagal memproses pesan, Anda bisa mengalami penundaan hingga 15 detik.

[out, optional] lpdwResult

Jenis: PDWORD_PTR

Hasil pemrosesan pesan. Nilai parameter ini tergantung pada pesan yang ditentukan.

Mengembalikan nilai

Jenis: LRESULT

Jika fungsi berhasil, nilai yang dikembalikan bukan nol. SendMessageTimeout tidak memberikan informasi tentang waktu jendela individual habis jika HWND_BROADCAST digunakan.

Jika fungsi gagal atau waktu habis, nilai yang dikembalikan adalah 0. Perhatikan bahwa fungsi tidak selalu memanggil SetLastError pada kegagalan. Jika alasan kegagalan penting bagi Anda, hubungi SetLastError(ERROR_SUCCESS) sebelum memanggil SendMessageTimeout. Jika fungsi mengembalikan 0, dan GetLastError mengembalikan ERROR_SUCCESS, maka perlakukan sebagai kegagalan generik.

Komentar

Fungsi memanggil prosedur jendela untuk jendela yang ditentukan dan, jika jendela yang ditentukan milik utas yang berbeda, tidak kembali sampai prosedur jendela telah memproses pesan atau periode waktu habis yang ditentukan telah berlalu. Jika jendela yang menerima pesan milik antrean yang sama dengan utas saat ini, prosedur jendela dipanggil secara langsung—nilai waktu habis diabaikan.

Fungsi ini mempertimbangkan bahwa utas tidak merespons jika belum memanggil GetMessage atau fungsi serupa dalam waktu lima detik.

Sistem hanya melakukan marshalling untuk pesan sistem (yang dalam rentang 0 hingga (WM_USER-1)). Untuk mengirim pesan lain (>= WM_USER) ke proses lain, Anda harus melakukan marshalling kustom.

Nota

Header winuser.h mendefinisikan SendMessageTimeout sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta preprosedur UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.

Persyaratan

Syarat Nilai
klien minimum yang didukung Windows 2000 Professional [hanya aplikasi desktop]
server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]
Platform Target Windows
Header winuser.h (termasuk Windows.h)
Pustaka User32.lib
DLL User32.dll
set API ext-ms-win-ntuser-message-l1-1-0 (diperkenalkan di Windows 8)

Lihat juga

Konseptual

GetMessage

InSendMessage

Pesan dan Antrean Pesan

PostMessage

Referensi

SendDlgItemMessage

SendMessage

SendMessageCallback

SendNotifyMessage