Windows (全般)

Windows OS 全般に関する話題を扱うフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home)
VBSでSendKeysが効かない
投稿日時: 19/03/02 20:19:59
投稿者: 富山の初心者

VBSの実行での質問です。
 
下記コーディングをメモ帳で記述し保存後、拡張子をVBSにして、
ダブルクリックで実行しました。
すると、メモ帳は開くのですが、
「WshShell.SendKeys("%F%X")」が実行されません。
すなわち、メモ帳がとじません。
メモ帳は開いたままです。
原因はどこにありますか?
よろしくお願いします。
 
以下、コーディング
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "NOTEPAD.EXE C:\ABC\TDump.txt",,True
WScript.Sleep 1000
WshShell.SendKeys("%F%X")
MsgBox "終了"
Set WshShell = Nothing

回答
投稿日時: 19/03/03 09:49:49
投稿者: よろずや

間違いが2つあります。
 
(1)Run の第3引数に True を指定
これを指定すると、Notepadが終了するまで次の行が実行されません。
 
(2)Sendkeys の引数に %F%X を指定
2番目の%は不要です。

回答
投稿日時: 19/03/03 10:00:00
投稿者: Suzu

こんにちは。
 
問題はふたつ。
1.

引用:
WshShell.Run "NOTEPAD.EXE C:\ABC\TDump.txt",,True
MsgBox "前"
WScript.Sleep 1000
MsgBox "後"

とでもしてみてください。
 
メッセージボックスは表示されますか?
されないと思います。。
つまり、前回のコードでは、Sleep 実行にたどりついていません。
何が起きているかというと、メモ帳を開いていますがそのウィンドが閉じるまでVBSは待機状態にいます。
 
原因は、
引用:
WshShell.Run "NOTEPAD.EXE C:\ABC\TDump.txt",,True

の中にあります。
 
WshShell.Run のヘルプをもう一度 調べてみてください。
 
【Run メソッド】
https://docs.microsoft.com/ja-jp/previous-versions/windows/scripting/cc364421%28v%3dmsdn.10%29
 
2.
引用:
すなわち、メモ帳がとじません。
メモ帳は開いたままです。

 
終了の為には、Alt+F X です。
 
引用:
WshShell.SendKeys("%F%X")

では Alt+F Alt+X となってしまいます。

投稿日時: 19/03/03 11:07:42
投稿者: 富山の初心者

よろずや 様
Suzu 様
ありがとうございます。
 
ご指摘の通り、
WshShell.Run "NOTEPAD.EXE C:\ABC\TDump.txt",,True

WshShell.Run "NOTEPAD.EXE C:\ABC\TDump.txt"
および
WshShell.SendKeys("%F%X")

WshShell.SendKeys("%FX")
で、想定の動作となりました。
ありがとうございました。
解決とさせていただきます。
 
 
試してみたvbsは以下の通りです。
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "NOTEPAD.EXE C:\ABC\TDump.txt"
MsgBox "確認1"
WScript.Sleep 1000
MsgBox "確認2"
WshShell.SendKeys("%FX")
MsgBox "終了"
Set WshShell = Nothing