问:“文档管理”类软件保存IE页面所选文字的实现原理?(50分)

  • 主题发起人 主题发起人 DaChu
  • 开始时间 开始时间
D

DaChu

Unregistered / Unconfirmed
GUEST, unregistred user!
该类软件常在IE的右键菜单中添加一个 “ 将所选部分保存到XXX软件中”
现在知道是在注册表中添加两个项
但我不知道它们的作用

好像调用了一个HTML文件,同剪贴板有关系吗?请指教,谢谢!

我不知道应该发在哪?只好发在这了
 
首先在[HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/MenuExt/]下新建一“主键”(注意不是“值”),主键的名称为将显示在上下文莱单中的名称,比如:使用网际快车下载全部链接。在此新建一名为Test的主键。而Test键的默认值为点击莱单项时要执行的“.htm”文件,在此假设为“C:/Test.htm”,其内容如下:
<SCRIPT LANGUAGE="JavaScript">
var parentwin = external.menuArguments;
var doc = parentwin.document;
var sel = doc.selection;
var rng = sel.createRange();
var str = new String(rng.text);
if(str.length == 0)
rng.text = "MY INSERTED TEXT";
else
rng.text = str.toUpperCase();
</SCRIPT>

注意上述内容为IE浏览器的内嵌脚本,执行时窗口是隐藏的。上述内容的意思是当在IE浏览器中选取了一段内容,并点击Test莱单项后,那么选区内的所有小写字母都将变为大写字母,而若没选取任何内容时,则在当前窗口中插入MY INSERTED TEXT。
此外,还可有选择的让Test出现在上下文莱单中,比如:只让Test莱单项出现在有超级链接的地方,则可在Test主键下新建的类型为“DOWRD”的名为“contexts”的值,值的内容为十六进制值22,当然还可为其它的十六进制值,具体意思和内容请参阅MSDN帮助。
下面给出本人测试时所用的注册表脚本内容(文件名为Test.reg):

REGEDIT4
[HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/MenuExt/Test]
@="C://Test.htm"
"contexts"=dword:00000022

懂一点 DHtml 就行了!!!!!!!!
 
@="C://Test.htm"
"contexts"=dword:00000022

中"00000022"是什么意思,可以设成其它的吗?
 
20. IE里的探索之向标准上下文相关菜单里添加条目
本文描述在Microsoft Internet Explorer中执行URL指定的脚本时,如何向它的标准上下文相关菜单中添加菜单项。
如果你想向 Internet Explorer 的标准上下文相关菜单中添加菜单项,那么你应该熟悉注册表以及上下文相关菜单。有关上下文相关菜单的详细内容,可以参阅 SDK 中关于 Windows Shell API 的文档。 这里讨论的实现方式对 Internet Explorer 4.0 以上版本有效,Internet Explorer的早期版本不支持这个功能。

实现步骤
按以下步骤在 Internet Explorer 的标准上下文相关菜单中添加菜单项:
1. 在指定位置:HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/MenuExt
以你希望在上下文相关菜单中显示的文本创建新键。
结果类似于:
HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/MenuExt/<Menu Text>
以你希望在上下文相关菜单中显示的文本替换<Menu Text>。键名中可以包含字符 (&), 它后面的字符将被加上下划线,并作为快捷键。

2. 把键值设置为指向一个网页的 URL,该页应包含你希望菜单项执行的脚本。此脚本能从对象 external 的属性 menuArguments 中获得上级 window 对象和执行此菜单项的屏幕。

3. 可选。在以下位置:
HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/MenuExt/<Menu Text>
创建一个二进制值,Context。结果类似于:
HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/MenuExt/<Menu Text/Contexts
设置 Contexts 的值以指明在标准的上下文相关菜单中,你的菜单项应该出现在哪些上下文里,这里我们使用由以下值按逻辑或运算所组成的掩码:

上下文 = 值
默认 = 0x1
图形 = 0x2
控件 = 0x4
表格 = 0x8
选中的文本 = 0x10
锚 = 0x20
例如,如果你希望在默认的上下文相关菜单里,和在上下文是选中的文本时,你的菜单项都出现,把 Context 的值设置为 0x11。

4. 可选。在以下位置:
HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/MenuExt/<Menu Text>
创建一个 DWORD 值,Flags。结果类似于:
HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/MenuExt/<Menu Text/Flags
将 Flags 的值设置为 0x1 会使脚本的运行方式就和通过方法 showModalDialog 调用它时一样。和方法 showModalDialog 不同,脚本可以通过对象 external 的属性 menuArgument 访问上级 window 对象。
通过以“路径,resource_id”格式所指定的资源的路径和引用标志,我们可以引用保存在资源中的字符串。例如,如果你想引用 Example.dll 中的字符串资源 123,可以使用 "Example.dll, 123"。
 
非常感谢你的帮助!
 
后退
顶部