我尝试将消息发送到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;
}
答案 0 :(得分:2)
我强烈建议您检查hr
和m_hWnd
的值以及sendmessage()
的返回值。我怀疑“发送消息不起作用”,但我愿意相信“我的消息没有到达”。您确定要将其发送到有效目的地吗?
答案 1 :(得分: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从处理函数返回的内容,因此我也会检查该消息的文档。
通常可以通过传递GetLastError()返回的错误代码作为FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, ...)
中的dwMessageId参数来获取人类可读的错误消息。