SendMessage
將指定的消息發送到窗口或窗口。該SendMessage函數的函數調用指定的窗口的窗口過程,并不會返回,直到窗口過程已經處理了該消息。
要發送消息并立即返回,請使用SendMessageCallback或SendNotifyMessage函數。要將消息發布到線程的消息隊列并立即返回,請使用PostMessage或PostThreadMessage函數。
hWnd [in]
類型:HWND
窗口程序將接收消息的窗口的句柄。如果此參數為HWND_BROADCAST((HWND)0xffff),則會將消息發送到系統中的所有頂級窗口,包括禁用或不可見的未知窗口,重疊窗口和彈出窗口; 但消息不發送到子窗口。
郵件發送受UIPI約束。進程的線程可以將消息發送到較小或相同完整性級別的進程中的線程的消息隊列。
msg [中]
類型:UINT
要發送的消息。
wParam [in]
類型:WPARAM
附加消息特定信息。
lParam [in]
類型:LPARAM
附加消息特定信息。
返回值
類型:LRESULT
返回值指定消息處理的結果; 這取決于發送的消息。
備注
當UIPI阻止消息時,使用GetLastError檢索的最后一個錯誤設置為5(訪問被拒絕)。
需要使用HWND_BROADCAST進行通信的應用程序應使用RegisterWindowMessage函數來獲取應用程序間通信的唯一消息。
系統只對系統消息進行編組(范圍為0到(WM_USER -1))。要發送其他消息(那些> = WM_USER)到另一個進程,你必須做自定義編組。
如果指定的窗口是由調用線程創建的,則窗口過程將立即作為子例程調用。如果指定的窗口是由不同的線程創建的,則系統切換到該線程并調用相應的窗口過程。線程之間發送的消息只有在接收線程執行消息檢索代碼時才被處理。發送線程被阻塞,直到接收線程處理消息。然而,發送線程將在等待其消息被處理的同時處理傳入的非排隊消息。為了防止這種情況,請使用設置了SMTO_BLOCK的SendMessageTimeout。
可訪問性應用程序可以使用SendMessage將WM_APPCOMMAND消息發送到shell以啟動應用程序。此功能不能保證適用于其他類型的應用程序。
總結
以上是生活随笔為你收集整理的SendMessage的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows服务编写原理(上)
- 下一篇: 2021-07-05-日历