訊息和訊息佇列

本節說明訊息和訊息佇列,以及如何在應用程式中使用這些佇列。

本節內容

名稱 描述
關於訊息和訊息佇列 本節討論 Windows 訊息和訊息佇列。
使用訊息和訊息佇列 下列程式碼範例示範如何執行與 Windows 訊息和訊息佇列相關聯的下列工作。
訊息參考 包含 API 參考。

System-Provided訊息

如需系統提供的訊息清單,請參閱 系統定義訊息

訊息函數

名稱 描述
BroadcastSystemMessage 將郵件傳送給指定的收件者。 收件者可以是應用程式、可安裝驅動程式、網路驅動程式、系統層級設備磁碟機,或這些系統元件的任何組合。
若要在定義要求時接收其他資訊,請使用 BroadcastSystemMessageEx 函式。
BroadcastSystemMessageEx 將郵件傳送給指定的收件者。 收件者可以是應用程式、可安裝驅動程式、網路驅動程式、系統層級設備磁碟機,或這些系統元件的任何組合。
此函式類似于 BroadcastSystemMessage ,不同之處在于此函式可以從收件者傳回更多資訊。
DispatchMessage 將訊息分派至視窗程式。 它通常用來分派 GetMessage 函式所擷取的訊息。
GetInputState 判斷呼叫執行緒的訊息佇列中是否有滑鼠按鍵或鍵盤訊息。
GetMessage 從呼叫執行緒的訊息佇列中擷取訊息。 函式會分派傳入的已傳送訊息,直到張貼的訊息可供擷取為止。
不同于 GetMessagePeekMessage 函式不會等候在傳回之前張貼訊息。
GetMessageExtraInfo 擷取目前線程的額外訊息資訊。 額外的訊息資訊是與目前線程訊息佇列相關聯的應用程式或驅動程式定義值。
GetMessagePos 擷取 GetMessage 函式所擷取最後一則訊息的資料指標位置。
若要判斷游標的目前位置,請使用 GetCursorPos 函式。
GetMessageTime 擷取 GetMessage 函式所擷取最後一則訊息的訊息時間。 時間是長整數,指定從系統開始到建立訊息的時間 (,以毫秒為單位,放線上程的訊息佇列) 。
GetQueueStatus 指出在呼叫執行緒的訊息佇列中找到的訊息類型。
InSendMessage 判斷目前的視窗程式正在處理從同一個進程中的另一個執行緒 (傳送的訊息,還是呼叫 SendMessage 函式) 不同的進程。
若要取得訊息傳送方式的其他資訊,請使用 InSendMessageEx 函式。
InSendMessageEx 判斷目前的視窗程式正在處理從同一個進程中的另一個執行緒 (傳送的訊息,還是處理不同的進程) 。
PeekMessage 分派傳入的已傳送訊息、檢查已張貼訊息的執行緒訊息佇列,並在有任何存在時擷取訊息) (。
PostMessage 在與建立指定視窗的執行緒相關聯的訊息佇列中張貼訊息,並傳回 ,而不需要等待中的執行緒處理訊息。
若要在與執行緒相關聯的訊息佇列中張貼訊息,請使用 PostThreadMessage 函式。
PostQuitMessage 向系統指出執行緒已提出終止要求, (結束) 。 它通常用於回應 WM_DESTROY 訊息。
PostThreadMessage 將訊息張貼至指定執行緒的訊息佇列。 它會傳回 ,而不等待中的執行緒處理訊息。
RegisterWindowMessage 定義保證在整個系統中是唯一的新視窗訊息。 傳送或張貼訊息時,可以使用訊息值。
ReplyMessage 回復透過 SendMessage 函式傳送的訊息,而不需要將控制權傳回給稱為 SendMessage 的函式。
SendAsyncProc 搭配 SendMessageCallback 函式使用的應用程式定義回呼函式。 將訊息傳遞至目的地視窗程式之後,系統會將訊息傳遞至回呼函式。 SENDASYNCPROC類型會定義這個回呼函式的指標。 SendAsyncProc 是應用程式定義函數名稱的預留位置。
SendMessage 將指定的訊息傳送至視窗或視窗。 SendMessage函式會呼叫指定視窗的視窗程式,而且在視窗程式處理訊息之前不會傳回 。
若要立即傳送訊息並傳回,請使用 SendMessageCallbackSendNotifyMessage 函式。 若要將訊息張貼至執行緒的訊息佇列並立即傳回,請使用 PostMessagePostThreadMessage 函式。
SendMessageCallback 將指定的訊息傳送至視窗或視窗。 它會呼叫指定視窗的視窗過程,並立即傳回。 在視窗程式處理訊息之後,系統會呼叫指定的回呼函式,並將訊息處理的結果和應用程式定義的值傳遞至回呼函式。
SendMessageTimeout 將指定的訊息傳送至多個視窗的其中一個。
SendNotifyMessage 將指定的訊息傳送至視窗或視窗。 如果視窗是由呼叫執行緒所建立, SendNotifyMessage 會呼叫視窗的視窗程式,而且在視窗程式處理訊息之前不會傳回 。 如果視窗是由不同的執行緒所建立, SendNotifyMessage 會將訊息傳遞至視窗程式並立即傳回;它不會等待視窗程式完成處理訊息。
SetMessageExtraInfo 設定目前線程的額外訊息資訊。 額外的訊息資訊是與目前線程訊息佇列相關聯的應用程式或驅動程式定義值。 應用程式可以使用 GetMessageExtraInfo 函式來擷取執行緒的額外訊息資訊。
TranslateMessage 將虛擬金鑰訊息轉譯為字元訊息。 字元訊息會張貼至呼叫執行緒的訊息佇列,下次執行緒呼叫 GetMessagePeekMessage 函式時要讀取。
WaitMessage 當執行緒在其訊息佇列中沒有其他訊息時,產生其他執行緒的控制。 WaitMessage函式會暫停執行緒,而且線上程訊息佇列中放置新訊息之前不會傳回。

訊息常數

名稱 描述
OCM__BASE 用來定義私用視窗類別使用的私人訊息。
WM_APP 用來定義私人訊息。
WM_USER 用來定義私用視窗類別使用的私人訊息。

訊息結構

名稱 描述
BSMINFO 包含拒絕 來自 BroadcastSystemMessageEx之要求的視窗相關資訊。
味精 包含來自執行緒之訊息佇列的訊息資訊。