« CDやDVDドライブを開く、閉じる。(その2) | トップページ | NOPアプリは? »

2007年7月 8日 (日)

WSHスクリプトからHTAを操作する。

WSHなどのスクリプトからIEを起こして、操作することが出来ますが、
HTAの場合は、そういうことが出来ません。そこをなんとかして、
HTAのWindowオブジェクトをWSHなどのスクリプトから操作します。
WSHからIEを駆動するときは、セキュリティゾーンの束縛を受けますが、
HTAなら自由にオブジェクトを組み込めます。

HTAオブジェクト作成関数

Function CreateHtaObject()
Dim wShell
Dim Shell
Dim ie
Dim window

Set wShell=CreateObject("WScript.Shell")
wShell.Run "MSHTA.EXE ""javascript:void(new ActiveXObject('InternetExplorer.Application').PutProperty('"&WScript.ScriptName&"',window));"""
Set Shell=CreateObject("Shell.Application")
Do
  For Each ie In Shell.Windows()
    If Not IsEmpty(ie.GetProperty(WScript.ScriptName)) Then
      Set window=ie.GetProperty(WScript.ScriptName)
      If TypeName(window)="HTMLWindow2" Then
        Set CreateHtaObject=window
        ie.Quit
        Exit Do
      Else
        MsgBox TypeName(window)
      End If
    End If
  Next
  WScript.Sleep 100
Loop
End Function

その使用例

Option Explicit
Dim hta

Set hta=CreateHtaObject()

hta.document.title=WScript.ScriptName
hta.alert hta.location
Do While TypeName(hta)="HTMLWindow2"
  WScript.Sleep 100
Loop
MsgBox "HTA Ended."
WScript.Quit

« CDやDVDドライブを開く、閉じる。(その2) | トップページ | NOPアプリは? »