首先你會發現keybd_event函數中是沒有窗口句柄作為參數的,好奇的你一定會覺得很奇怪,那是因為,keybd_event是全局模擬按鍵的,只對前台窗口(即當前的活動窗口)才可以,但是如果模擬的按鍵正好也是某個窗口的全局熱鍵消息,那該窗口也能接收到的
而SendMessage 、PostMessage是對指定句柄窗口都其作用的,對於做一些一外掛是非常有用的。例如可以做成這樣的效果:即用SendMessage/PostMessage在某一個窗口模擬動作,而同時自己可以在其他窗口做其他事情,互不影響的!
但是有一點要注意,很多人在模擬鍵盤消息的時候,都會忘記模擬WM_KEYUP的消息。。。
還有一點就是,PostMessage中的窗口句柄參數,可以設置為HWND_BROADCAST,即廣播,但不要理所當然地認為是對所有的窗口都起作用!!!它只對系統的頂層窗口起作用,子窗口是收不到這個消息的!!!
還要注意的是SendMessage是沒有HWND_BROADCAST參數的,那是因為,SendMessage總是等發送的消息在對應的窗口消息隊列 中處理完畢后才返回的(這是一種負責的行為), 細想一下就知道為什么SendMessage沒有HWND_BROADCAST參數了!!