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>
むしゃくしゃしてやった。今は反省している。