WSHでMSHTML.HTMLDocumentを扱えた ― 2007年10月14日 05時41分08秒
久々のWSHネタ
via: Windows Script Programming: コマンドラインでHTMLファイルをテキストファイルにする。
うは、こりゃすごい。昔2chのWSHスレで「InternetExplorer.ApplicationをcreateしなくてもMSHTML扱える」っていうようなレスを見たことあったんだけど、具体的にどうやるのか知らなかったが、リンク先の記事にばっちり書いてあった。
こんな方法で取得できるとは...
この記事では、
var htmlfile = new ActiveXObject("htmlfile");ってな方法でオブジェクトを作成していて、これでMSHTMLのHTMLDocument(=documentオブジェクト)が取得できる。
んで、これのparentWindowを参照するとHTMLWindow2(=windowオブジェクト)があっさり取得できる(ちなみにこのwindowのlocation.hrefはabout:blankだった)。
ちなみにこの操作を行ってもIEのプロセスは起動していなかった。インプロセスでIE相当のオブジェクトを取得できたわけだ。
クリップボード使い放題
WSHでクリップボードを扱う場合はIE経由が定番だったのだが、IEはアウトプロセスサーバのため、インスタンスの生成コストがべらぼーに高く、あんまり手軽に扱えなかった。
が、今回の方法は前述のとおりインプロセス動作のようなので、さくっとwindowオブジェクトにアクセスでき(IE経由の場合と違い、わざわざabout:blankにnavigateしなくてもいいし)、
var ClipUtil = { get : function() { return new ActiveXObject("htmlfile").parentWindow .clipboardData.getData("text"); }, set : function(text) { new ActiveXObject("htmlfile").parentWindow .clipboardData.setData("text", text); } };なんてユーティリティ作って、さくさくとクリップボードデータが操作できたりする。また、インプロセスだから終わった後にプロセス落とさなくてもいいってのもうれしい。
コメント
トラックバック
このエントリのトラックバックURL: http://dara-j.asablo.jp/blog/2007/10/14/1852018/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
_ dara-j - 2007年10月16日 02時15分30秒
こちらの記事で、IEではなくMSHTMLから取得したwindowを利用したクリップボードユーティリティクラスを掲載したのだが、落とし穴が。
クリップボードから
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。