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文件
From:http://tw.wingwit.com/Article/program/net/201311/13731.html