WindowsScriptingHost

利権を守ることに必死なOPTPiXはマクロ処理をコマンドラインから呼び出しても、
Enterキー等を押さなければいけなくてイライラする。


こんなん自動化しろや!というかmakeから呼べねーじゃないか!



ということでKeyを押すだけのマクロのアプリを色々探してたのですが、Windowsにはスクリプトを自動実行してくれる環境があったのでそれを使う。
http://www.atmarkit.co.jp/fwin2k/operation/wsh06/wsh06_02.html


はまったこと

  • OPTPiXを呼び出してからvbsを呼び出すようにするとAppActiveがとってこれない。のでvbsの中でistudio.exeを起動させる。
  • ProcessIDで処理するとすでに起動しているときに正しく動作しない。ので名前で指定する。
  • 処理の終了を取れないので正しいタイミングで閉じることができない。ので閉じない。
Set WSHShell = WScript.CreateObject("WScript.Shell")
Set objExec = WSHShell.Exec("istudio.exe /macro tim2にする.ops")
' 起動を待つ
'process idにするとすでに起動しているときに意図した動作をしない
'Do Until WSHShell.AppActivate(objExec.ProcessID)
Do Until WSHShell.AppActivate("OPTPIX")
  WScript.Sleep 100
Loop

' ダイアログの表示を待つ
Do Until WSHShell.AppActivate("マクロ処理")
  WScript.Sleep 100
Loop

WSHShell.SendKeys "{ENTER}"


完全に自動化できませんとかぬかしてるが、
全部やろうとすりゃそりゃそうなるけど一般的なリソースは大抵自動化できる罠。
対応してくれよ。


しかし、いかにも日本の開発的な発想ですね。プンプン!