2010-06-30 4 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, что вы проверить значения hr и m_hWnd и возвращаемое значение sendmessage(). Я сомневаюсь, что «Отправить сообщение не работает», но я готов поверить, что «мое сообщение не приходит». Вы уверены, что отправляете его в действительное место назначения?

0

Вы можете обернуть вызов SendMessage между SetLastError() и GetLastError(), как так ...

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 возвращается из функции обработки, поэтому я хотел бы проверить docs для этого сообщения.

Обычно вы можете получить сообщение об ошибке для человека, передав код ошибки, который GetLastError() возвращает как параметр dwMessageId в FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, ...).

FormatMessage docs.