C#实现IE浏览器添加右键快捷菜单项C#实现的给IE浏览器添加右键快捷菜单项并将本页URL地址传递给右键菜单项所指向的外部应用程序
将网页保存为mht格式其实是个很简单的功能其实浏览器本身就带这个功能这里只是利用这个简单的例子来介绍给IE浏览器添加右键快捷菜单功能项的并将本页面的URL地址传给右键快捷菜单项所指向的应用程序并执行的过程
首先介绍给IE浏览器添加右键快捷菜单项代码如下
try
{
string regkey = @Software\Microsoft\Internet Explorer\MenuExt\KnowledgeSave;
string scriptPath = PathCombine(AppDomainCurrentDomainBaseDirectory @)
RegistryKey root = RegistryCurrentUserOpenSubKey(regkey)
if (null == root)
{
root = RegistryCurrentUserCreateSubKey(regkey)
rootSetValue( scriptPath RegistryValueKindString)
rootSetValue(Contexts xf RegistryValueKindDWord)
}
} catch (Exception ex)
{
//DFAppLogDebug(exToString())
}
其中添加的右键菜单项叫KnowledgeSave(第行)这个将会出现在IE浏览器的右键菜单中当点击着个菜单项后将指向这个文件包含了获取本页URL地址并调用外部程序的javascript代码
文件内容如下
<script language=javascript>
function exec(command)
{
windowoldOnError = windowonerror;
window_command = command;
windowonerror = function (err) {
if (errindexOf(utomation) != ) {
alert(命令 + window_command + 已经被用户禁止!)
return true;
}
else return false;
};
var wsh = new ActiveXObject(WScriptShell)
if (wsh)
wshRun(command)
windowonerror = windowoldOnError;
}
function OnContextMenu() {
var command = D:/myProject/VSProject/wfaKnowledgeWarehouse/wfaKnowledgeWarehouse/bin/Debug/wfaKnowledgeWarehouseexe ;
var url = nuArgumentsdocumentURL;
exec(command + url)
}
OnContextMenu()
</script>
本文件中定义了两个函数第一个函数exec(command)负责将命令command在windows的cmd中执行第二个函数OnContextMenu()负责获得当前页面的URL地址并指出需要调用的外部执行程序的地址(这里我用的是绝对地址大家可以根据需要改成相对的这里就不多说了)并形成cmd下的命令语句交与exec函数执行
如上面代码OnContextMenu()函数中的变量command指出了需要执行的外部程序是wfaKnowledgeWarehouseexe变量url获得了当前页面的URL地址
下面是wfaKnowledgeWarehouse的源码
using System;using SystemCollectionsGeneric;using SystemText;using SystemNet;
using SystemIO;using SmartKernelFrameworkNetHtmlParser;
using SmartKernelFrameworkNet;using SmartKernelFrameworkLog;
namespace wfaKnowledgeWarehouse
{
public class Program
{
static void Main(string[] args)
{
string strUrl = ;
if(argsLength>)
{
strUrl = args[];
}
try
{
DownLoaderSaveToMhtFile(strUrl 包含路径的另存为的名字)
}
catch (Exception ex)
{
ConsoleWriteLine(网页内容无法保存!)
}
}
}}
上面的代码功能很简单就不多说了其中包含了几个外部的dll文件