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

3
我正在尝试将一个新条目添加到Internet Explorer的右键上下文菜单中。我了解到可以通过创建包含JavaScript的HTML文件,然后从注册表中的某个位置链接到它来实现此操作。我还了解到您也可以将HTML添加到资源文件中并将其编译为DLL(请参见Microsoft KB:向标准上下文菜单添加条目)。这就是我开始遇到问题的地方。
以下是我迄今为止所做的一些背景信息:
  • 我在文件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. 在VS 2005中创建了一个名为“IETest”的Visual C++类库项目,位于“c:\IETest”中。 2. 将我的“C:\test.htm”文件导入默认的“app.rc”资源文件中。我已将ID更改为“TEST”。 3. 以调试模式编译DLL。 4. 修改注册表条目。
res://C:\IETest\debug\IETest.dll/TEST
如果我现在重新启动IE并再试一次,当我右键单击并选择我的新上下文菜单条目时,消息框不会出现。我还尝试了没有任何运气的DLL发布版本,并尝试将最后一个正斜杠替换为逗号,并更改路径中的单反斜杠为双反斜杠。

我只能推测在创建DLL时做错了什么。 有人可以指点我正确的方向吗? 有没有办法检查编译后的DLL以检查资源和相关ID?

谢谢。


当你说“alert”时,你真的是指“上下文菜单项”吗? - Eddie
如果我在第一个示例中使用JavaScript,当我选择新的上下文菜单项时,会出现一个“alert”消息框,这是正确的。但是,当我尝试将此JavaScript添加到新的DLL中时,我遇到了问题。我将更新条目以使句子更清晰。 - Craig T
1个回答

2
您尝试过将ID设置为TEST.html吗? 我猜测IE不知道如何处理该文件,因为它没有列出扩展名,但这完全是基于某些MS .dll的标识方式(即res://c:\windows\system32\shdoclc.dll/navcancl.htm)的猜测。
我能想到的唯一其他事情是确保您的资源类型为23。
ResourceHacker可以像您想要的那样查看资源文件:http://angusj.com/resourcehacker/

感谢BarrettJ。ResourceHacker已经解决了这个问题。实际上,HTML资源的ID是101。我已经修改了注册表项如下,现在它按预期工作...res://C:\IETest\debug\IETest.dll/101据我所见,在VS 2005或2008中似乎没有查看或设置此值的方法? - Craig T

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接