我正在尝试将新条目添加到 Internet Explorer 的右键单击上下文菜单中。我知道这可以通过创建一个包含 JavaScript 的 HTML 文件,然后从注册表中的某个位置链接到它来实现。我还了解到您还可以将 HTML 添加到资源文件并将其编译为 DLL(请参阅 Microsoft 知识库文章: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 中,我似乎无法访问该脚本。以下是我采取的步骤:
- 在 VS 2005 中在
c:\IETest
中创建了一个名为'IETest'
的新 Visual C++ 类库项目 - 将我的
C:\test.htm
文件导入到默认的app.rc
资源文件中。我已将ID
更改为TEST
- 在 Debug模式下编译 DLL
- 更改注册表项以读取
res://C:\IETest\debug\IETest.dll/TEST
如果我现在重新启动 IE 并重试,当我右键单击并选择新的上下文菜单条目时,消息框不会出现。我也尝试过 DLL 的发布版本,但没有任何运气,还尝试用逗号替换最后一个正斜杠并将路径单反斜杠更改为双斜杠。
我只能假设我在创建我的 DLL 时做错了什么。谁能指出我正确的方向?有什么方法可以检查已编译的 DLL 以检查资源和关联的 ID?
谢谢。
最佳答案
您是否尝试过将 ID 设为 TEST.html?我的猜测是 IE 不知道如何处理该文件,因为它没有列出扩展名,但这完全是基于某些 MS .dll 识别它们的方式这一事实的猜测(即 res://c:\windows\system32\shdoclc.dll/navcancl.htm)
我唯一能想到的另一件事是确保您的资源是 23 类型。
ResourceHacker 可以随意查看资源文件:http://angusj.com/resourcehacker/
关于c++ - 将项目添加到 Internet Explorer 的右键单击上下文菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/786566/