
VBSを利用して、IEのタブを自動的に切り替え続けるスクリプトを作成しています。
以下現状
手動でやる事
・作成したVBSファイルをダブルクリックして起動
・IEは常に画面の全面(アクティブウィンドウ)にしておく
VBSファイルの中身
set W = WScript.CreateObject("WScript.Shell")
do
WScript.sleep 30000
W.Sendkeys "^{TAB}"
loop
これでも正常に動くのですが、
ここにESCキーを押す事でプロセスを終了させるスクリプトを追記したいのですが、どのようにしたらよいでしょうか。
ご教授お願いします。
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の検知は押しっぱなしでないと厳しいかもです。
うまく調整して組み込んでみて下さい。
それでは。
ありがとうございます!
非常によくわかりました。色々調べているうちにGetAsyncKeyStateを利用できるというのは
わかったんですが、Excel経由で呼び出さないといけなかったんですね。
勉強になりましたm(__)m
No.2
- 回答日時:
No1です
今見直していたら余計な行がありました。
Set ExcelApp = WScript.CreateObject("Excel.Application")
これを2回書いてしまっているのでどちらか消して下さい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
- Microsoft ASP C#からvbsを実行したい 5 2022/11/24 17:31
- その他(プログラミング・Web制作) VBSでExcelファイル起動時、重複しても開くのを止めたい 1 2022/10/01 23:20
- Chrome(クローム) グーグルクロムをマイクロソフト・エッジに切り替える方法 2 2022/06/20 10:08
- Windows 7 ショートカットキー 応用編 どういうの主に使いますか? 2 2022/12/28 23:46
- ニコニコ動画 【Premiere Pro】をお使いの方 カット作業を他動画に反映することはできますか? 1 2022/05/18 16:27
- Windows Me・NT・2000 widows xpのエラーで利用ができなくなりました 3 2022/12/21 13:43
- Visual Basic(VBA) VBS Bookを閉じるコード 1 2023/02/16 17:31
- Ameba(アメーバブログ) アメブロは、HTMLのタグの入力を許さないブログ・サイトですか? 1 2023/06/18 18:48
- ホームページ作成・プログラミング アメーバ・ブログは"HTMLタグ"を許可してないのですか? 2 2023/06/17 21:08
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ディスクの空き容量を求める(W...
-
crontab での実行結果が違う
-
VBScriptでCurrentDirectoryを...
-
UWSCのスクリプトにラグが発生...
-
AWkの配列についてのデバッグ
-
VBSを利用して、IEのタブを自動...
-
Cからシェルを起動し返り値をハ...
-
rshを使うスクリプトをバックグ...
-
ADサーバにおけるログインID,PC...
-
ラズパイ CSV 定量削除
-
Perl Debugger のエラ-
-
例外処理のフローチャートの記...
-
ユーザー定義関数に#NAME?が返...
-
VBAで別モジュールへの変数の受...
-
VBSがコンパイルエラーになりま...
-
vba userFormのSubを標準モジュ...
-
混合言語のデバッグ(VC++6.0,V...
-
モジュールとクラスの違いって...
-
エクセルVBAでシートモジュール...
-
Excel VBA 定義されたプロージ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ADサーバにおけるログインID,PC...
-
Cからシェルを起動し返り値をハ...
-
Perlのライセンス
-
powershellで関数名を変更する...
-
cygwinでcshが認識されず困って...
-
UWSCのスクリプトにラグが発生...
-
VBScriptでCurrentDirectoryを...
-
perlスクリプトのブラウザURLか...
-
awkの処理速度を改善したい
-
シェルでsyntax errorがでてしまう
-
vbs: オブジェクトがコレクショ...
-
Postfixでメールを受信したらPe...
-
複数のスクリプトを同時に走ら...
-
CGI_Lite.pmは,Perl6.5.1 で使...
-
perlでコマンドライン文字列受...
-
スペースを含むファイルの実行...
-
PHPとJavaScriptを足してビルド...
-
なぜAドライブが起動するのでし...
-
CGI + Mysqlによるバックアップ
-
Windows系OSのPerlスクリプト...
おすすめ情報