C#中在IE右键菜单中添加自定义项的方法
2009-01-07 15:22
477 查看
首先需要在增加注册表项 HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/MenuExt/MyApp
MyApp为你想要显示在右键菜单中的名称
VBScript处理脚本,新增的注册表项的默认值是包含这个VBScript脚本的Html页面地址。
具体代码如下:
添加注册表项:
/**//// <summary>
/// 在IE中增加右键菜单
/// </summary>
static void RegistryIeContextMenu() {
try {
string regkey = @"Software/Microsoft/Internet Explorer/MenuExt/MyApp";
string scriptPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "geturl.htm");
RegistryKey root = Registry.CurrentUser.OpenSubKey(regkey);
if (null == root) {
root = Registry.CurrentUser.CreateSubKey(regkey);
root.SetValue("", scriptPath, RegistryValueKind.String);
root.SetValue("Contexts", 0x00000022, RegistryValueKind.DWord);
}
} catch (Exception ex) {
DFApp.LogDebug(ex.ToString());
}
}
脚本geturl.htm(我是直接在迅雷的geturl.htm基础上改的)
<script language="VBScript">
Sub AddLink(Url,Info,Location)
On Error Resume Next
if Url <> "" then
if Info = "" then
Info = "unknown"
end if
if Len(Info) > 1000 then
Info = Left(Info, 1000)
end if
DownloadInfo = Url + "^" + Info
set shell = CreateObject("Wscript.Shell")
shell.Run "C:/MyApp.EXE " + DownloadInfo
end if
end sub
Sub OnContextMenu()
set srcEvent = external.menuArguments.event
set srcLocation = external.menuArguments.location
set EventElement = external.menuArguments.document.elementFromPoint ( srcEvent.clientX, srcEvent.clientY )
if srcEvent.type = "MenuExtAnchor" then
set srcAnchor = EventElement
do until TypeName(srcAnchor)="HTMLAnchorElement"
set srcAnchor=srcAnchor.parentElement
Loop
Call AddLink(srcAnchor.href,srcAnchor.innerText,srcLocation)
elseif srcEvent.type="MenuExtImage" then
if TypeName(EventElement)="HTMLAreaElement" then
Call AddLink(EventElement.href,EventElement.Alt,srcLocation)
else
set srcImage = EventElement
set srcAnchor = srcImage.parentElement
do until TypeName(srcAnchor)="HTMLAnchorElement"
set srcAnchor=srcAnchor.parentElement
if TypeName(srcAnchor)="Nothing" then
call AddLink(srcImage.href,srcImage.Alt,srcLocation)
exit sub
end if
Loop
Call AddLink(srcAnchor.href,srcImage.Alt,srcLocation)
end if
elseif srcEvent.type="MenuExtUnknown" then
set srcAnchor = EventElement
do until TypeName(srcAnchor)="HTMLAnchorElement"
set srcAnchor=srcAnchor.parentElement
if TypeName(srcAnchor)="Nothing" then
Call AddLink(EventElement.href,EventElement.innerText,srcLocation)
exit sub
end if
Loop
Call AddLink(srcAnchor.href,srcAnchor.innerText,srcLocation)
elseif 1=1 then
MsgBox("Unknown Event Source """ + srcEvent.type + """" + vbCrLf + "Please send description of error ")
end if
end sub
call OnContextMenu()
</script>
MyApp为你想要显示在右键菜单中的名称
VBScript处理脚本,新增的注册表项的默认值是包含这个VBScript脚本的Html页面地址。
具体代码如下:
添加注册表项:
/**//// <summary>
/// 在IE中增加右键菜单
/// </summary>
static void RegistryIeContextMenu() {
try {
string regkey = @"Software/Microsoft/Internet Explorer/MenuExt/MyApp";
string scriptPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "geturl.htm");
RegistryKey root = Registry.CurrentUser.OpenSubKey(regkey);
if (null == root) {
root = Registry.CurrentUser.CreateSubKey(regkey);
root.SetValue("", scriptPath, RegistryValueKind.String);
root.SetValue("Contexts", 0x00000022, RegistryValueKind.DWord);
}
} catch (Exception ex) {
DFApp.LogDebug(ex.ToString());
}
}
脚本geturl.htm(我是直接在迅雷的geturl.htm基础上改的)
<script language="VBScript">
Sub AddLink(Url,Info,Location)
On Error Resume Next
if Url <> "" then
if Info = "" then
Info = "unknown"
end if
if Len(Info) > 1000 then
Info = Left(Info, 1000)
end if
DownloadInfo = Url + "^" + Info
set shell = CreateObject("Wscript.Shell")
shell.Run "C:/MyApp.EXE " + DownloadInfo
end if
end sub
Sub OnContextMenu()
set srcEvent = external.menuArguments.event
set srcLocation = external.menuArguments.location
set EventElement = external.menuArguments.document.elementFromPoint ( srcEvent.clientX, srcEvent.clientY )
if srcEvent.type = "MenuExtAnchor" then
set srcAnchor = EventElement
do until TypeName(srcAnchor)="HTMLAnchorElement"
set srcAnchor=srcAnchor.parentElement
Loop
Call AddLink(srcAnchor.href,srcAnchor.innerText,srcLocation)
elseif srcEvent.type="MenuExtImage" then
if TypeName(EventElement)="HTMLAreaElement" then
Call AddLink(EventElement.href,EventElement.Alt,srcLocation)
else
set srcImage = EventElement
set srcAnchor = srcImage.parentElement
do until TypeName(srcAnchor)="HTMLAnchorElement"
set srcAnchor=srcAnchor.parentElement
if TypeName(srcAnchor)="Nothing" then
call AddLink(srcImage.href,srcImage.Alt,srcLocation)
exit sub
end if
Loop
Call AddLink(srcAnchor.href,srcImage.Alt,srcLocation)
end if
elseif srcEvent.type="MenuExtUnknown" then
set srcAnchor = EventElement
do until TypeName(srcAnchor)="HTMLAnchorElement"
set srcAnchor=srcAnchor.parentElement
if TypeName(srcAnchor)="Nothing" then
Call AddLink(EventElement.href,EventElement.innerText,srcLocation)
exit sub
end if
Loop
Call AddLink(srcAnchor.href,srcAnchor.innerText,srcLocation)
elseif 1=1 then
MsgBox("Unknown Event Source """ + srcEvent.type + """" + vbCrLf + "Please send description of error ")
end if
end sub
call OnContextMenu()
</script>
相关文章推荐
- C#中在IE右键菜单中添加自定义项的方法
- c# TreeView添加右键快键菜单有两种方法
- merlin.acs的使用方法 merlin.acs添加右键菜单
- c#如何仅在datatgirdview控件的头部(列名处)添加右键菜单
- utraledit安装之后无右键菜单--添加方法
- 在IE右键菜单中添加菜单项以及添加按钮
- VC在指定控件中添加右键菜单的两种方法
- C#实现窗体最小化时存至系统托盘,并为notifyicon添加右键菜单
- c#GroupBox控件添加右键菜单
- 注册表添加策略方法及实现,添加桌面右键菜单
- C#.NET常见问题(FAQ)-如何给Listbox添加右键菜单
- 给IE添加右键菜单
- C# 如何在 Windows 文件系统中添加自定义右键菜单
- 关于Eclipse 插件添加右键菜单的三种方法
- C# winform treeview node添加右键菜单并选中节点
- 文件夹右键菜单添加快捷DOS命令的两种方法
- c#判断右键菜单(ContextMenuStrip)是从哪个控件弹出来的方法
- 如何在C#添加鼠标右键菜单
- 在IE右键菜单,添加图片保存快捷方式
- 【电脑使用】修改注册表,添加右键菜单“打开”的方法