JSCRIPTからHTAウィンドウを生成してあやつる

WSHスクリプトからHTAを操作する。を大いに参考。

でもURLの方法だとIE7IEがShellから切り離された(?不確実)ので、Vistaとかで実行できない。また、VBScriptはよく分からんのでよく使うJSCRIPTで再実装。

↓適当なファイル名(sample.js)で保存して実行してみて。メッセージが出れば成功。

function createHtaWindow(){
	var jscommand = "javascript:";
	jscommand += "new ActiveXObject('InternetExplorer.Application');";
	jscommand += "new ActiveXObject('Shell.Application').Windows().item(0).PutProperty('HtaWindowObject',window);";
	for(var col = new Enumerator( new ActiveXObject("Shell.Application").Windows() ); ! col.atEnd(); col.moveNext()) {
		col.item().PutProperty("HtaWindowObject",undefined);
	}
	new ActiveXObject("WScript.Shell").Run("mshta.exe \""+jscommand+"\"");
	var hta = null;
	while(hta == null){
		for(var col = new Enumerator( new ActiveXObject("Shell.Application").Windows() ); ! col.atEnd(); col.moveNext()) {
			if(typeof(col.item().GetProperty("HtaWindowObject"))!=undefined){
				hta = col.item().GetProperty("HtaWindowObject");
				col.item().PutProperty("HtaWindowObject",undefined);
				break;
			}
		}
		WScript.Sleep(500);
	}
	return hta;
}

var hta = createHtaWindow();
hta.document.title = "success!!";
WScript.Sleep(500);
hta.alert("close this window!!");
hta.close();