sendmessage不起作用

时间:2010-06-30 03:12:51

标签: c++ sendmessage

我尝试将消息发送到IE钢筋/工具栏,但似乎我的工具栏没有消息效果。有人能告诉我哪里有错吗?

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 个答案:

答案 0 :(得分:2)

我强烈建议您检查hrm_hWnd的值以及sendmessage()的返回值。我怀疑“发送消息不起作用”,但我愿意相信“我的消息没有到达”。您确定要将其发送到有效目的地吗?

答案 1 :(得分:0)

您可能希望将SendMessageSetLastError()之间的电话打包到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从处理函数返回的内容,因此我也会检查该消息的文档。

通常可以通过传递GetLastError()返回的错误代码作为FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, ...)中的dwMessageId参数来获取人类可读的错误消息。

FormatMessage docs