どうか教えて下さいSet WshShell = CreateObject(\u0026quot;WScript.Shell\u0026quot;)WshShell.Run \u0026quot;cmd.exe /c taskkill /im chrome.exe /f \u0026amp; shutdown /s /t 0 /hybrid\u0026quot;, 0, FalseというVBSにていつもシャットダウンしているんですが、通常のWindowsマークから入ってのシャットダウン するのとでは次回起動時の挙動がなんか違うような気がずっとしてました。なんというか違和感というか言葉で言い表すのが難しいんですがなんとなくです。というのもVBSを走らせてのシャットダウンから次回起動するといつもは立ち上がってくるアプリが立ち上がらなかったり、(いつもじゃないです、たま~に)そんな些細な変化くらいしかないです。通常使用の上ではどちらも不具合あったりもないです。このモヤモヤを解決したくここに質問致します。使用環境はWindows11 25H2です

Windows

1件の回答

回答を書く

1005128

2026-03-07 22:05

+ フォロー

もう既に解決していらっしゃる様な雰囲気ですが、解決済みにされていないので VBScript で一例として回答します。

ブラウザが手動で閉じられた時を再現していますので、次回の Windows 起動時にはブラウザからのメッセージ等は表示されないと思います。

以下ソースコードなので、試してみる場合には全てをコピーしてください。

但し、別途 Win32API のラッパープログラムである \u0026quot;SFC mini\u0026quot; のインストールが必要になります。





' ////////////////////////////////////////////////////////////////////////

' このプログラムは google Chrome ブラウザウィンドウの右上Xボタンを

' 押した時と同じ状態でウィンドウを閉じた後に高速スタートアップ様式で

' Windows をシャットダウンする VBScript です。



' ウィンドウ操作のため、本スクリプトの動作には別途 Win32API の

' ラッパープログラムである \u0026quot;SFC mini\u0026quot; のインストールが必要です。

' 2025年現在、ベクターから入手可能です。

' https://www.vector.co.jp/download/file/winnt/prog/fh652422.html



' 開発・動作テスト環境:Windows10 32bit, SFC mini インストール済み

' ////////////////////////////////////////////////////////////////////////



Option Explicit



Dim EnumWindows

Declare EnumWindows, \u0026quot;user32\u0026quot;, \u0026quot;EnumWindows\u0026quot;



Dim IsWindowVisible

Declare IsWindowVisible, \u0026quot;user32\u0026quot;, \u0026quot;IsWindowVisible\u0026quot;



Dim GetWindowText

Declare GetWindowText, \u0026quot;user32\u0026quot;, \u0026quot;GetWindowTextA\u0026quot;



Dim SendMessage

Declare SendMessage, \u0026quot;user32\u0026quot;, \u0026quot;SendMessage\u0026quot;



Dim objWin32



' Declare ステートメントを有効にして Win32API を呼び出す

Private Sub Declare(objWin32, Library, FunctionName)

    Set objWin32 = WScript.CreateObject(\u0026quot;SfcMini.DynaCall\u0026quot;)

    objWin32.Declare Library, FunctionName



End Sub





' Crome ブラウザーの終了を待ってからシャットダウン

If EnumerationOfTheWindows() = 0 Then

    Call FastStartup_ShutDown()

End If



'----------------------------------------



' ウィンドウの列挙

Private Function EnumerationOfTheWindows()

    Dim clsCallback

    Set clsCallback = New EnumWindowsProc

    Call EnumWindows(EnumWindows.CallBack(clsCallback, 2), 0)



    EnumerationOfTheWindows = clsCallback.lngResult



    Set clsCallback = Nothing



End Function



'----------------------------------------



' EnumWindows 関数のコールバッククラス

Class EnumWindowsProc

    Public lngResult



    Public Function CallBack(hWnd, lParam)

        ' 可視ウィンドウの判定

        If IsWindowVisible(hWnd) = 1 Then



            ' ウィンドウタイトルを取得

            Dim strWindowText

            strWindowText = Space(256)

            If GetWindowText(hWnd, strWindowText, 256) \u0026gt; 1 Then

                strWindowText = _

                    left(strWindowText, InStr(strWindowText, vbNullChar) -1)



                ' google Chrome なら hWnd 宛てにクローズメッセージを送信

                Const strProgramName = \u0026quot;google Chrome\u0026quot;

                If InStr(strWindowText, strProgramName) \u0026gt; 1 Then

                    Const WM_CLOSE = 16 ' 0x0010

                    lngResult = SendMessage(hWnd, WM_CLOSE, 0, 0)



                End If



            End If



        End If



        CallBack = 1



    End Function



    Private Sub Class_Terminate()

        Set objWin32 = Nothing



    End Sub



End Class



'------------------------------------------------------



'高速スタートアップ様式でパソコンをシャットダウンする

Private Sub FastStartup_ShutDown()

    Dim objWshShell

    Set objWshShell = WScript.CreateObject(\u0026quot;WScript.Shell\u0026quot;)

    objWshShell.Run \u0026quot;shutdown.exe -s -hybrid -t 00\u0026quot;



    Set objWshShell = Nothing



End Sub

うったえる有益だ(0シェアするブックマークする

関連質問

Copyright © 2026 AQ188.com All Rights Reserved.

博識 著作権所有