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