URL直打ちだとできるのですが…。
IEのレジストリをカスタマイズすることで、コンテキストメニュー(右クリックメニュー)に任意のアプリを起動するようにコマンドを追加できます。
(1)以下の内容をメモ帳に貼り付け、適当なフォルダに保存(例えば、C:\test\menuext.js)
<SCRIPT language="JavaScript">
var appPath = "c:\\program files\\internet explorer\\iexplore.exe";
var pathToURL=(function(){
var wimg=new Image();
var work=external.menuArguments.document.createElement('iframe');
work.style.display='none';
external.menuArguments.document.body.appendChild(work);
var wdoc=work.contentWindow.document;
return function(path,base){
var url=path;
if (!base) { // default: location.href
wimg.src=path;
url=wimg.src;
}
else {
wdoc.open();
wdoc.write('<head><base href="'+base+'" \/><\/head><body><img src="'+path+'" \/><\/body>');
wdoc.close();
url=wdoc.getElementsByTagName('img')[0].src;
}
return url;
};
})();
var url = "";
var srcNode = external.menuArguments.event.srcElement;
var curNode = srcNode;
while(curNode != null && ('tagName' in curNode) && url == ""){
if(curNode.tagName.toUpperCase() == 'A'){
url = curNode.href;
} else {
curNode = curNode.parentElement;
}
}
if(url == ""){
if(srcNode.tagName == "IMG"){
url = srcNode.src;
}
}
if(url != ""){
url = pathToURL(url, external.menuArguments.location.href);
var wsh = new ActiveXObject("WScript.Shell");
wsh.Run("\"" + appPath + "\" \"" + url + "\"");
}
</SCRIPT>
緑字の部分は起動したいヘルパーアプリの場所に置き換えてください。(\は\\で置き換えてください)
(2)以下の内容をメモ帳に貼り付け、適当なフォルダに保存(例えば、C:\test\menuext.reg)
REGEDIT4 [HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\画像をヘルパーアプリで起動] @="c:\\test\\menuext.js" "Contexts"=dword:00000022
赤字の部分はコンテキストメニューに表示する文字列に置き換えてください。
青字の部分は(1)で保存したファイルの場所に置き換えてください。(\は\\で置き換えてください)
(3)(2)で保存したレジストリファイルをダブルクリックする
以上の手順でメニューが追加され、右クリックからヘルパーアプリを起動できるようになります。
参考:
うーむ、上手く動きません。ヘルパーアプリ(IrfanView)がもともとURLを引数に指定できないからでしょうか?
しかし、ひとまずIEを指定しなおしたところ、そこから更に関連付けでヘルパーアプリが起動するので一件落着です。
またURLにローカルファイルを指定していて、それを開きたいのですが上と同様file:////が引数に指定できなかったため、
最後の部分を少しだけ変えました。
さらに、コンテキストメニューにアクセスキーを設定
良い感じです。