在windows下,傳遞訊息一般使用兩個函式postmessage和sendmessage,函式原型如下:
bool winapi postmessage (hwnd hwnd, uint msg, wparam wparam, lparam lparam);
bool winapi sendmessage(hwnd hwnd, uint msg, wparam wparam, lparam lparam);
利用這兩個函式,都可以向指定視窗傳送訊息,其中
msg表示訊息型別,例如wm_keydown,wm_paint;
wparam和lparam都是訊息附加資訊, 視不同訊息指定不同的值。wparam常常代表一些控制項的id或者高位低位組合起來分別表示滑鼠的位置。lparam通常用來指定某種結構的指標或者控制代碼。
關於這兩個函式,有如下區別:
1.postmessage把訊息送入訊息佇列後,立即返回,其返回值表示postmessage函式執行是否正確。sendmessage必須等傳送的訊息處理完成後才返回,其返回值表示其它程式處理訊息後的返回值。
2.postmessage傳送的訊息先放入訊息佇列,然後通過訊息迴圈dispatch到目標視窗,所以對於vc中的訊息預處理函式pretranslatemessage可以捕捉到此訊息。sendmessage傳送的訊息,直接呼叫目標視窗的訊息處理程式,所以訊息預處理函式捕捉不到此訊息。
3.另外由於postmessage傳送的訊息不會立即處理,所以如果在引數中帶有指標或者臨時變數,最好使用sendmessage方法,否則可能會由於變數的生命週期發生變化,而導致訪問錯誤。
chrome外掛程式開發 訊息傳遞
開發chrome外掛程式的時候經常看到不同的例子用的介面不同 如contentscript向background傳送訊息的時候就有兩種api chrome extension sendrequest和chrome.runtime.sendmessage 開始困然了我很長時間。但是看了chrome的文...
ABP框架開發 訊息通知
一次完整的訊息傳送 接收過程中,會存在幾個必要的點,也正如同現實生活中的場景,有人傳送,有人接收,傳送的訊息本身也有型別。1 訊息型別定義 設定應用程式中常用通知唯一的名稱常量 public static class 其次,開始訊息型別定義,新建乙個notificationprovider的類,完成...
微信公眾平台開發 群發訊息
github完整原始碼 這裡演示的是預覽介面,用於開發測試!require public.php class sendsmessage sends test end class end send new sendsmessage send sends test test 測試完成後 只需要將post...