MSDN > 論壇首頁 > Visual C++ General > shdoclc.dll missing when trying to customize WebBrowser control context menu
發問發問
 

已答覆shdoclc.dll missing when trying to customize WebBrowser control context menu

  • Monday, 2 February, 2009 16:29Jonas Nordlund 使用者勳章使用者勳章使用者勳章使用者勳章使用者勳章
     
    I'm not sure when it went M.I.A. but suddenly, now when I'm on Windows Vista 64-bit (Swedish) and Internet Explorer 8 RC, I don't have it in %WINDIR%\System32 at least.

    This causes a problem in our application that attempt to customize the context menu in a hosted WebBrowser control. It is supposed to load that DLL, and next its IE menu resource, and then get a handle to it and customize it. But now with the DLL entirely missing I'm stopped early in my tracks. :S

    Why could it be that I don't have that DLL? Can I just get it from someone else? Do IE 8 (or already 7?) no longer use it? I'm not quite sure when this happened because our app silently caught the problem, and I haven't tried using the context menu until now. ;)

    TIA

    Jonas

解答

  • Monday, 2 February, 2009 18:13Sheng Jiang 蒋晟MVP使用者勳章使用者勳章使用者勳章使用者勳章使用者勳章
     已答覆

    The DLL disappears after the IE upgrade. Loading resources from Windows Dlls is not supported. Whoever invented the hack in the WebBrowser Customization article needs to update the page to include a warning that the hack may stop working without notice. 


    In Internet Explorer 7, the technique for overriding the context menu from a DocObject host is the same as Internet Explorer 6; however, the host must implement its own menu resources. The internal resources of Internet Explorer should not be used as they may change or move (as has been done in Internet Explorer 7). See Appending Extensions to Your Custom Menu below.

    MSMVP VC++

所有回覆

  • Monday, 2 February, 2009 17:56nobugzMVP, 版主使用者勳章使用者勳章使用者勳章使用者勳章使用者勳章
     
    Is it because you should look in the c:\windows\syswow64 directory instead?
    Hans Passant.
  • Monday, 2 February, 2009 18:13Sheng Jiang 蒋晟MVP使用者勳章使用者勳章使用者勳章使用者勳章使用者勳章
     已答覆

    The DLL disappears after the IE upgrade. Loading resources from Windows Dlls is not supported. Whoever invented the hack in the WebBrowser Customization article needs to update the page to include a warning that the hack may stop working without notice. 


    In Internet Explorer 7, the technique for overriding the context menu from a DocObject host is the same as Internet Explorer 6; however, the host must implement its own menu resources. The internal resources of Internet Explorer should not be used as they may change or move (as has been done in Internet Explorer 7). See Appending Extensions to Your Custom Menu below.

    MSMVP VC++
  • Monday, 2 February, 2009 22:18Jonas Nordlund 使用者勳章使用者勳章使用者勳章使用者勳章使用者勳章
     
    Alright, thanks! Yes, the technique always felt quite "hacky" to me, although I believe I learnt it from that article, with the #define for IDR_BROWSE_CONTEXT_MENU and all. ;) Hmm, I'll look around as for how to add our "personal" menu with "View source", "Print" and "Page properties" commands then. Earlier, we took the IE menu and removed all items we didn't want, essentially just leaving those.