将项添加到Internet Explorer的右键单击上下文菜单

时间:2009-04-24 16:17:20

标签: c++ internet-explorer dll resources registry

我正在尝试在Internet Explorer的右键单击上下文菜单中添加一个新条目。我知道这可以通过创建包含JavaScript的HTML文件,然后从注册表中的某个位置链接到此文件来实现。我还读到您还可以将HTML添加到资源文件并将其编译为DLL(请参阅Microsoft KB:Adding Entries to the Standard Context Menu)。这是我开始遇到问题的地方。

以下是我到目前为止所做的一些背景知识。

  • 我在文件C:\test.htm中有以下JavaScript:
<script type="text/javascript">
    alert('Hello, world!');
</script>
  • 我在以下位置的注册表中添加了新的REG_SZ'c:\test.htm'
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt

如果我现在重新启动IE,我的新菜单项将出现在上下文菜单中。如果我选择新的菜单项,我的消息框警报将按预期显示。到现在为止还挺好。但是,如果它在DLL中,我似乎无法访问该脚本。以下是我采取的步骤:

  1. 在{2005年'IETest'
  2. 中名为c:\IETest的VS 2005中创建了一个新的Visual C ++类库项目
  3. 将我的C:\test.htm文件导入默认的app.rc资源文件。我已将ID更改为TEST
  4. 以调试模式编译DLL
  5. 将注册表项更改为
  6. res://C:\IETest\debug\IETest.dll/TEST
    

    如果我现在重新启动IE并再试一次,当我右键单击并选择我的新上下文菜单条目时,不会出现消息框。我也尝试了没有任何运气的DLL的发布版本,并尝试用逗号替换最后的正斜杠并将路径单反斜杠改为双斜线。

    我只能假设在创建DLL时我做错了。谁能指出我正确的方向?有什么办法可以检查编译的DLL来检查资源和相关的ID吗?

    感谢。

1 个答案:

答案 0 :(得分:2)

您是否尝试过将ID设为TEST.html?我的猜测是IE不知道如何处理该文件,因为它没有列出扩展名,但这完全是基于某些MS .dll识别它们的事实的猜测(即res:// c: \ Windows \ System32下\ SHDOCLC.DLL / navcancl.htm)

我唯一能想到的就是确保你的资源是23型。

ResourceHacker可以查看您想要的资源文件:http://angusj.com/resourcehacker/