2009-04-24 103 views
3

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

以下是我迄今为止所做的一些背景介绍。

  • 我有一个文件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中。下面是我所采取的步骤:进口我C:\test.htm到默认的文件app.rc资源文件

  1. 创建于2005年VS一个新的Visual C++类库项目名为'IETest'c:\IETest
  2. 。我已经改变了IDTEST
  3. 编译
  4. 改变了注册表项,在调试模式下DLL阅读
res://C:\IETest\debug\IETest.dll/TEST 

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

我只能假设我在创建我的DLL时做了一些错误。任何人都可以将我指向正确的方向吗?有什么办法可以检查编译的DLL来检查资源和关联的ID吗?

谢谢。

+0

当你说“提醒”你真的是“上下文菜单项”? – Eddie 2009-04-24 16:35:57

+0

如果我在第一个示例中使用JavaScript,当选择我的新的上下文菜单项时,会出现'alert'消息框。我遇到的问题是当我尝试将这个JavaScript添加到一个新的DLL。 我将更新条目以使版权清晰一些。 – 2009-04-24 18:45:39

回答

2

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

我唯一能想到的其他事情就是确保您的资源是23型。

ResourceHacker可以看到像你这样的资源文件需要:http://angusj.com/resourcehacker/

相关问题