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