OperaをIEの右クリック(コンテキストメニュー)から起動する方法

Firefoxには、Internet Explorerコンテキストメニューから右クリックでFirefoxを起動する拡張"FirefoxView"があり便利に使っていたのですが、Operaには同様の機能がないようなので作ってぱくってみました。

  • 素人なのでつっこみどころ満載だと思います。ごめんなさい。
  • レジストリをいじらなくてもIEの右クリックを拡張するソフトでもいいと思いますが、単にOperaを起動するためだけのためにソフトをインストールしたくなかったので。
  • HTML, JavaScriptなどはそのままFirefoxViewのものを使いました。どう見てもFirefoxViewのパクリです。本当にありがとうございました。

レジストリ View This Page in Opera.reg

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\View This Page in Opera]
"Contexts"=dword:00000001
@="file://D:\\{ユーザ名}\\Opera\\Profile\\operaviewpage.html"

レジストリ Open Link Target in Opera.reg

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\Open Link Target in Opera]
@="file://D:\\{ユーザ名}\\Opera\\Profile\\operaviewlink.html"
"Contexts"=dword:00000022

operaviewpage.html

<HTML>
<SCRIPT LANGUAGE="JavaScript" defer> 

function runOpera(location) {
	var ws = new ActiveXObject("WScript.Shell");
		ws.Run("\"D:\\Program Files\\Opera\\opera.exe\" \"" + location + "\"");
}

var oWindow = window.external.menuArguments.top;		
if (oWindow != null) {
	runOpera(oWindow.location);
}
</SCRIPT>
</HTML>

operaviewlink.html

<HTML>
<SCRIPT LANGUAGE="JavaScript" defer> 
function runOpera(location) {
	var ws = new ActiveXObject("WScript.Shell");
		ws.Run("\"D:\\Program Files\\Opera\\opera.exe\" \"" + location + "\"");
}

var oWindow = window.external.menuArguments;		
if (oWindow != null) {
	var oDocument = oWindow.document;	
	var sText = null;	

	var oEvent = oWindow.event;				
	if ((oEvent.type == "MenuExtUnknown") || (oEvent.type == "MenuExtImage") || (oEvent.type == "MenuExtAnchor")) {
		var oElement = oDocument.elementFromPoint(oEvent.clientX, oEvent.clientY);
		var oAnchor = oElement;
		while ((oAnchor.tagName != "A") && (oAnchor.tagName != "AREA") && (oAnchor.tagName != "HTML")) {
			oAnchor=oAnchor.parentElement;
		}

		if (oAnchor.tagName=="A" || oAnchor.tagName=="AREA") {
			sText = oAnchor.href;
		} else if (oAnchor.tagName=="HTML" && oElement.tagName=="IMG") {
			sText = oElement.src;
		}
	}


	if ((sText != null) && (sText.length != 0)) {
		var location = new String(sText);
		runOpera(location);
	}
}
</SCRIPT>
</HTML>

むしゃくしゃしてやった。今は反省している