ieに右クリックメニューとclipboardData
2010/02/27
ie
windows
コンテクストメニュー
IE(Internet Explorer)の右クリックメニュー(コンテクストメニュー)にメニューを追加します。
あわせて呼ばれるプログラム(Javascript)を設定します。
参考
レジストリ経由でメニューを追加します。
以下
REGEDIT4
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt]
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\a]
@="file:///Z:/for_win/research/ieに右クリックメニューとclipboardData/a.html"
"Flags"=dword:00000000a
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt]
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\a]
@="file:///Z:/for_win/research/ieに右クリックメニューとclipboardData/a.html"
"Flags"=dword:00000000a
REGEDIT4
は何やら必須のようですね。
レジストリファイルの解説 - 進め!中級プログラマー
次に実行するjavascriptを書いてあるhtmlファイルの用意
<script language="JavaScript">
// 開かれたコンテクストメニューがあるウィンドウ
var oWindow = window.external.menuArguments;
var oDocument = oWindow.document;
// 選択された部分
var oSelect = oDocument.selection;
// TextRangeCreate
var oSelectRange = oSelect.createRange();
var sNewText = oSelectRange.text;
// 取得した文字列をクリップボードに入れる
clipboardData.setData("Text", oSelectRange.text);
oSelectRange.text = "上書き";
</script>
// 開かれたコンテクストメニューがあるウィンドウ
var oWindow = window.external.menuArguments;
var oDocument = oWindow.document;
// 選択された部分
var oSelect = oDocument.selection;
// TextRangeCreate
var oSelectRange = oSelect.createRange();
var sNewText = oSelectRange.text;
// 取得した文字列をクリップボードに入れる
clipboardData.setData("Text", oSelectRange.text);
oSelectRange.text = "上書き";
</script>
これでIEを再起動するとメニューの追加されてりいます。呼び出されるjavascriptはその都度呼び出されるので、修整しながら実行がらくですね。
あと、Javascriptでクリップボードに値をコピーします。
IEだとクリップボードのやりとりがClipboardDataを通してできるようです。
: