2010-06-30 50 views
0

我嘗試向IE鋼筋/工具欄發送消息,但似乎我的工具欄沒有消息效果。有人能告訴我哪裏是錯?sendmessage不起作用

HRESULT CButtonDemoBHO::onDocumentComplete(IDispatch *pDisp, VARIANT *vUrl)  
{   
    m_hWnd = NULL; 
    SHANDLE_PTR nBrowser = NULL; 
    HRESULT hr = m_spWebBrowser2->get_HWND(&nBrowser); 
    m_hWnd = (HWND)nBrowser; 
    SendMessage(m_hWnd, WM_test, 0, 0); 
    return S_OK;  
} 

回答

2

我會stronly recommned您檢查的hrm_hWnd值和sendmessage()返回值。我懷疑「發送消息不起作用」,但我願意相信「我的消息沒有到達」。你確定你將它發送到一個有效的目的地嗎?

0

你可能想包裝SetLastError()GetLastError()之間的呼叫SendMessage,像這樣......

SetLastError(0); 
LRESULT rv = SendMessage(m_hWnd, WM_test, 0, 0); 
DWORD errCode = GetLastError(); 
if(errCode != ERROR_SUCCESS) { 
    // log error information here. 
} 

從SendMessage函數的返回值取決於什麼WM_test從處理函數返回,所以我會檢查該消息的文檔也是如此。

通常您可以通過傳遞GetLastError()返回的錯誤代碼作爲FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, ...)中的dwMessageId參數來獲取可讀的錯誤消息。

FormatMessage docs