在控制別的應用程序的時候,經常需要等待直到某個功能結束,例如:
打開一個窗口-->等待直到窗口結束
這個時候就可以用到SendMessage
如果在打開這個窗口后仍然需要對該窗口的界面進行設置,比如Edit的value等等,比如:
打開一個窗口-->控制窗口的control的屬性
這個時候就需要PostMessage
使用一個鉤子程序截獲消息后,使用SendMessage把消息發(fā)送到主處理程序進行處理,但是在主處理程序還沒有完成任務的時候,被設置鉤子的程序進入了停止的狀態(tài),不可以處理
WM_PAINT,
WM_MOVE,
.......等的基本信息,
必須要等SendMessage發(fā)送出的消息完成后,才能繼續(xù)運行,整個界面一片空白,把鉤子消息設置成PostMessage的發(fā)送消息形式后,問題解決!
我查了MSDN對這兩個API的定義,
PostMessage只是把消息放入隊列,不管其他程序是否處理都返回,然后繼續(xù)執(zhí)行;
而SendMessage必須等待其他程序處理消息后才返回,繼續(xù)執(zhí)行。
PostMessage的返回值表示PostMessage函數執(zhí)行是否正確;
而SendMessage的返回值表示其他程序處理消息后的返回值。
使用這兩個發(fā)送消息函數的最重要的是要看你的程序是否要對消息的滯后性關注否,PostMessage會造成消息的滯后性,而SendMessage則不會,但如果SendMessage消息處理失敗,則會造成程序停止!
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/kaguo/archive/2004/09/13/103005.aspx