Shellでbat実行時のコマンドプロンプト画面最大化 | |
---|---|
[196127] Shellでbat実行時のコマンドプロンプト画面最大化- ■親トピック/記事引用/メール受信=OFF■ □投稿者/ こまたん -(2024/04/08(06:48)) □U R L/ Shell "D:\〜〜\〜〜.bat", vbMaximizedFocus で、batファイルを実行しています。 batファイル実行中はコマンドプロンプトを表示していて、 batファイルの実行が終わると、コマンドプロンプトが自動で閉じます。 Win10までは、コマンドプロンプト画面が 最大化された状態で表示されていたのですが、 Win11では、コマンドプロンプト画面が 通常サイズで表示されるようになってしまいました。 最大化で表示させるようにするにはどうすればよいでしょうか? #以下、推測です。 コマンドプロンプト画面の設定で、画面サイズや表示位置を指定できます。 Win10では、コマンドプロンプト自体の設定よりも、 Shellの引数(vbMaximizedFocus)が優先されていましたが、 Win11では、コマンドプロンプト自体の設定が優先されてしまっているようです。 Win11でも、コマンドプロンプト自体の設定で「最大化」にすれば、 上記Shellでも最大化で表示されることは確認しました。しかし、 スタートメニューからコマンドプロンプトを起動した時や ほかの処理でbatを実行した時などに影響してしまう為、 コマンドプロンプトの設定自体は変更したくありません。 |
[196129] Re[1]: Shellでbat実行時のコマンドプロンプト画面最大化- ■記事引用/メール受信=OFF■ □投稿者/ kazuo -(2024/04/08(14:02)) □U R L/ chatGPTに聞いてみましたので参考にしてください。 me:Windows 11 vba shell にてコマンドプロンプトを最大表示する方法は? chatGPT: Sub OpenCommandPromptMaximized() Dim command As String command = "cmd /k start /max cmd.exe" Shell command, vbNormalFocus End Sub cmd /kはコマンドプロンプトを開き、実行するコマンドを指定します。start /max cmd.exeは、新しいコマンドプロンプトウィンドウを開き、それを最大化して表示します。 このVBAコードを実行すると、最大化されたコマンドプロンプトウィンドウが開きます。 この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 ++++++++++++++++++++ OS ⇒Windows 11 Version⇒Excel 2021 ++++++++++++++++++++ |
[196133] Re[2]: Shellでbat実行時のコマンドプロンプト画面最大化- ■記事引用/メール受信=OFF■ □投稿者/ こまたん -(2024/04/08(21:53)) □U R L/ ありがとうございます。 コマンドプロンプトを起動して、 そこで start "" /MAX "D:\〜〜.bat" を実行すると、コマンドプロンプトが新規に起動(画面最大化)で表示されることを確認できました。 このコマンドをShellで実行するために 下記のようにしました。 Shell "cmd /C "" start """""""" /MAX """"D:\〜〜.bat"""" "" ", vbMaximizedFocus ※ダブルクォートが入れ子になっているので、二重化や四重化されています。 コマンドプロンプトが新規に起動し、batは実行されるのですが、 画面は通常サイズで、最大化はされませんでした・・・。 むぅ・・・。なぜなんでしょう・・・。 |
[196134] Re[3]: Shellでbat実行時のコマンドプロンプト画面最大化- ■ / 記事引用/メール受信=OFF■ □投稿者/ kazuo -(2024/04/09(12:28)) □U R L/ 失礼しました。 /kだと最初のコマンドプロンプトが残ってしまいますね? batファイルのフォーカスはexitで消せますが、どうすればよいか解りません。 chatGPTもなかなか良い答えを返してくれません。 Sub OpenCommandPromptMaximized() Dim command As String command = "cmd /k start /max your_batch_file.bat" Shell command, vbMaximizedFocus End Sub この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 |
[196138] Re[4]: Shellでbat実行時のコマンドプロンプト画面最大化- ■記事引用/メール受信=OFF■ □投稿者/ kazuo -(2024/04/10(08:51)) □U R L/ 再度スレ汚し失礼します。 原始的方法?ですが、最大化キーを操作してみました。 Private Declare PtrSafe Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, _ ByVal dwFlags As Long, ByVal dwExtraInfo As Long) Sub test最大化() Dim command As String Dim task As Object Dim WD As Object Dim i As Long Set WD = CreateObject("Word.Application") command = "cmd /c your_batch_file.bat" Shell command, vbNormalFocus Do Application.Wait [now()+"0:0:0.3"] For Each task In WD.Tasks If Right(task.Name, 8) = "\cmd.exe" Then Exit Do Next i = i + 1 If 10 <= i Then Exit Do Loop DoEvents: DoEvents If i < 10 Then keybd_event &H5B, 0, 0, 0 'Windowsキーを押す keybd_event &H26, 0, 0, 0 '↑キーを押す DoEvents keybd_event &H26, 0, 2, 0 '↑キーを離す keybd_event &H5B, 0, 2, 0 'Windowsキーを離す End If WD.Quit Set WD = Nothing End Sub この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 |
[196139] Re[5]: Shellでbat実行時のコマンドプロンプト画面最大化- ■記事引用/メール受信=OFF■ □投稿者/ kazuo -(2024/04/10(09:37)) □U R L/ task最大化のコマンドありました。 If i < 10 Then task.WindowState = 1 End If この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 |
[196153] Re[6]: Shellでbat実行時のコマンドプロンプト画面最大化- ■ / 記事引用/メール受信=OFF■ □投稿者/ こまたん -(2024/04/12(19:07)) □U R L/ 最大化するにすることができました。 ありがとうございました! またありましたら、よろしくお願いします。 |
[196154] Re[7]: Shellでbat実行時のコマンドプロンプト画面最大化- ■記事引用/メール受信=OFF■ □投稿者/ kazuo -(2024/04/12(21:26)) □U R L/ >最大化するにすることができました。 もし、task.WindowState = 1 でのことなら taskは非同期ですので検索されたときは存在しても操作するときはなくなっている可能性があります。 On Error Resume Next task.WindowState = vbMaximizedFocus On Error GoTo 0 のほうが合理的かもしれません。 この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 |
このトピックに書きこむ |
---|