我按照此来源的说明操作:http://www.codeguru.com/cpp/com-tech/atl/atl/article.php/c11007/Customize-an-IE-Context-Menu-to-Add-CodeGuru-Favorites.htm 添加上下文菜单项并通过Javascript调用ActiveX控件的方法。这是重要的部分:
<SCRIPT LANGUAGE="JavaScript">
var parentwin = external.menuArguments;
var doc = parentwin.document;
var str = new String(parentwin.event.srcElement.name);
var oFav = new ActiveXObject("CodeguruFavorites.CGFavorites");
oFav.ShowDefaultContextMenu(parentwin,doc.title, doc.location);
</SCRIPT>
在此示例中,作者向ActiveX方法发送网页标题和我触发上下文菜单的网页的URL。
我想知道如何获取触发上下文菜单的图像的URL。
答案 0 :(得分:0)
我在这篇文章中找到了答案:How can one identify the currently clicked link with Javascript?。
触发上下文菜单的对象是menuArguments.event.srcElement。它作为IDispatch接口指针传递给ActiveX控件的方法。在此指针上,您可以调用QueryInterface以获取指向IHTMLImgElement的指针。
pDispatch->QueryInterface(IID_IHTMLElement,(void**)&lpElement);
if (lpElement)
{
CComBSTR tagName;
lpElement->get_tagName(&tagName);
if(0 == wcsicmp(tagName.m_str, L"img"))
{
CComPtr<IHTMLImgElement> spImg;
lpElement->QueryInterface(IID_IHTMLImgElement, (void**)(&spImg));
if(spImg)
{
CComBSTR src;
HRESULT hr = spImg->get_src(&src);
if(FAILED(hr))
return hr;
}
}
}