• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBSを利用して、IEのタブを自動的に切り替え)

VBSを利用してIEのタブを自動的に切り替え

このQ&Aのポイント
  • VBSファイルを利用してIEのタブを自動的に切り替える方法についてご教授ください。
  • 現在、VBSファイルを作成してIEのタブを切り替えていますが、ESCキーを押してプロセスを終了させるスクリプトの追記方法を教えてください。
  • タブの切り替えを自動化するVBSスクリプトにESCキーを押して終了する機能を追加したいです。方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • nofx35
  • ベストアンサー率82% (14/17)
回答No.1

こんばんは。 winAPIにGetAsyncKeyState関数があります。これを利用されてはどうでしょう。 ただ、VBSからwinAPIは直接呼び出す事が出来ません。 そこでExcelがインストールされているなら、Excel経由でwinAPIを呼び出し Key入力の判定を行います。 Dim Esc Dim ExcelApp Dim cmd Dim W Dim Ret Set W = WScript.CreateObject("WScript.Shell") Set ExcelApp = WScript.CreateObject("Excel.Application") Esc = 27 'Escのキーコード Set ExcelApp = WScript.CreateObject("Excel.Application") cmd = "CALL(""user32.dll"", ""GetAsyncKeyState"", ""JJ"", " & Esc & ")" Ret=0 'Escケープが押されているとRetには0以外が返る 'IEの処理は入れていません。 Do While Ret = 0 WScript.sleep 100 Ret = ExcelApp.ExecuteExcel4Macro(cmd) Loop Wscript.Echo "End" ExcelApp.Quit Set ExcelApp = Nothing これを実行して見てください。まずExcelが非表示で開きます。Escを押すと endとメッセージが出るはずです。その後Excelを閉じExcelへの参照を解放します。 タスクマネージャーを開きながら実行すると確認しやすいです。 質問者さんのLoopは30秒間隔ですから、Escの検知は押しっぱなしでないと厳しいかもです。 うまく調整して組み込んでみて下さい。 それでは。

vaki1031
質問者

お礼

ありがとうございます! 非常によくわかりました。色々調べているうちにGetAsyncKeyStateを利用できるというのは わかったんですが、Excel経由で呼び出さないといけなかったんですね。 勉強になりましたm(__)m

その他の回答 (1)

  • nofx35
  • ベストアンサー率82% (14/17)
回答No.2

No1です 今見直していたら余計な行がありました。 Set ExcelApp = WScript.CreateObject("Excel.Application") これを2回書いてしまっているのでどちらか消して下さい。

関連するQ&A

専門家に質問してみよう