自定义浏览器控件中去除默认IE右键菜单中的垃圾项(如百度XXX搜索)

在自定义浏览器控件中使用IE默认右键菜单中的部分项及其功能,去除那些烦人的垃圾项和查看源代码等项,方法如下:IDocHostUIHandler_MY::ShowContextMenu(DWORD dwID,POINT __RPC_FAR *ppt,
           IUnknown __RPC_FAR *pcmdtReserved,
           IDispatch __RPC_FAR *pdispReserved)

{
    HWND hwnd;
    CComPtr<IOleCommandTarget> spCT;
    CComPtr<IOleWindow> spWnd;
    HRESULT hr = pcmdtReserved->QueryInterface(IID_IOleCommandTarget, (void**)&spCT);
    hr = pcmdtReserved->QueryInterface(IID_IOleWindow, (void**)&spWnd);
    hr = spWnd->GetWindow(&hwnd);
    HINSTANCE hinstSHDOCLC = LoadLibrary(TEXT("SHDOCLC.DLL"));

    if (hinstSHDOCLC == NULL)
    {
        // 载入模块错误 -- 采用浏览器控件的默认处理
        return E_NOTIMPL;
    }
    HMENU hMenu=LoadMenu(hinstSHDOCLC,MAKEINTRESOURCE(24641));
    hMenu=GetSubMenu(hMenu,dwID);
 int num=GetMenuItemCount(hMenu);
 UINT id;
 for(int i=num-1;i>-1;i--)//删除所有其他菜单 {
  id=GetMenuItemID(hMenu,i);
  if(id==16 || id==15 || id==26 || id==31 || id==2270 || id==17) continue;//保留剪切,复制,粘贴,全选,图片另存为,删除
  if(id>2379 && id<2387) break;//垂直滚动条:滚动至此,上,下,向上翻页,向下翻页,向上滚动,向下滚动
  if(id>2386 && id<2393) break;//水平滚动条

  DeleteMenu(hMenu, id, MF_BYCOMMAND);
 }
 if(GetMenuItemCount(hMenu)>0)
 {
    //显示快捷菜单
    int iSelection = ::TrackPopupMenu(hMenu,TPM_LEFTALIGN | TPM_RIGHTBUTTON | TPM_RETURNCMD,
        ppt->x,ppt->y,0,hwnd,(RECT*)NULL);

    //发送选定的快捷菜单项目指令到外壳
    LRESULT lr = ::SendMessage(hwnd, WM_COMMAND, iSelection, NULL);
 }
    FreeLibrary(hinstSHDOCLC);
 return S_OK;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值