//getter new ActiveXObject("htmlfile").parentWindow.clipboardData.getData("text"); //setter new ActiveXObject("htmlfile").parentWindow.clipboardData.setData("text", "ぬるぽ");
こんな感じでクリップボードも操作出来ると思いきやgetterは動くのにsetterが動かない。セキュリティの関係なのか。と思ったら2chで発見した。
お前ら、wsh使ってますか? Part8の121
>>112
WSH は元々クリップボードを扱うことを想定していないから、
OLE の初期化という処理をアプリケーション側で行っていないんだよね。
だからクリップボードに値を設定することができない。
HTA のように OLE の初期化を行っているスクリプトホストであれば
>>112 のコードは正しく実行される。じゃあ WSH では不可能なのかというと、API を直接呼び出して
WSH 上で OLE の初期化をさせてしまうという強引な方法もある。
コードの理解には DynaCall や Win32API の知識が必要になるけど、
DynaCall を登録後、以下の三行をオマジナイとして
>>112 のコードの前に追加してみてください。
WSH でもクリップボードに値を設定できるはずだよ。var dynwrap = new ActiveXObject('DynamicWrapper');
dynwrap.register('ole32','OleInitialize','f=s','i=l','r=l');
dynwrap.OleInitialize(0);
なるほど原因は分かった。そこまでして強引にクリップボード扱いたい事もないけど。