人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Windows2000、IE6で(埋め込みではない)リンク先の画像ファイルをブラウザで表示せず、ヘルパーアプリケーションで開く方法はないでしょうか?
URL直打ちだとできるのですが…。

●質問者: moerrari
●カテゴリ:コンピュータ インターネット
✍キーワード:IE6 URL Windows2000 アプリケーション ファイル
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● ardarim
●60ポイント ベストアンサー

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)で保存したレジストリファイルをダブルクリックする


以上の手順でメニューが追加され、右クリックからヘルパーアプリを起動できるようになります。



参考:

[InetSDK] ブラウザの標準コンテキスト メニューに項目を追加する

風柳亭: 【JavaScript】任意のURLをベースにして、相対パスを絶対パスに変換(クロスブラウザっぽく)

◎質問者からの返答

うーむ、上手く動きません。ヘルパーアプリ(IrfanView)がもともとURLを引数に指定できないからでしょうか?

しかし、ひとまずIEを指定しなおしたところ、そこから更に関連付けでヘルパーアプリが起動するので一件落着です。

またURLにローカルファイルを指定していて、それを開きたいのですが上と同様file:////が引数に指定できなかったため、

最後の部分を少しだけ変えました。

 if(url != ""){
 url = pathToURL(url, external.menuArguments.location.href);
 var wsh = new ActiveXObject("WScript.Shell");
 url = url.replace("file:///","")
 url = url.replace(/\//g,"\\")
 clipboardData.setData("Text", url);
 wsh.Run("\"" + appPath + "\" \"" + url + "\"");

さらに、コンテキストメニューにアクセスキーを設定

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\画像をヘルパーアプリで起動(&I)

良い感じです。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ