VBAだと
Set objIE =
CreateObject("InternetExplorer.Application")
objIE.Visible = True
で最前面に表示されるのですけど、VBSだとなぜか背面に表示されます。
APIの「SetForegroundWindow」が使えそうなのですが、VBSで使える?
trickyではありますが、Excel4.0からcallすると使えるようです。
'windowをactiveにする(APIを使う)
With CreateObject("Excel.Application")
Call .ExecuteExcel4Macro("CALL(""user32"",
""SetForegroundWindow"", ""JJ"", "
& objIE.hWnd & ")")
End With
戻り値はtrue/falseのようですけど、”JJ”を”LJ”にするとerrorになります。
変数=戻り値、にしてもerrorになる?
ですが、windowが前面に出てきません。
調べていくと「SetForegroundWindowはWindows95、およびWindows98では正常に機能しますが、Windows2000、WindowsXPにおいてはタスクバーで点滅し、ウィンドウが隠れてしまいます。」とな。orz
では、「SetWindowPos」ではどうでしょう。
'windowをactiveにする(APIを使う)
With CreateObject("Excel.Application")
Call .ExecuteExcel4Macro("CALL(""user32"",""SetWindowPos"",""JJJJJJJJ""," & objIE.hWnd & ",0,0,0,0,0,3)")
End With
'windowをactiveにする(APIを使う)
With CreateObject("Excel.Application")
Call .ExecuteExcel4Macro("CALL(""user32"",""SetWindowPos"",""JJJJJJJJ""," & objIE.hWnd & ",-1,0,0,0,0,3)")
Call .ExecuteExcel4Macro("CALL(""user32"",""SetWindowPos"",""JJJJJJJJ""," & objIE.hWnd & ",-2,0,0,0,0,3)")
End With
0 件のコメント:
コメントを投稿