1

このリンクの2番目の例(セクションの例)には、WM_QUERYENDSESSIONを使用してシャットダウンを中止する方法についての説明があります。また、これはXPより後のバージョンのWindowsでは機能しないことも示しています。これは、stackoverflowでここにある別の質問で与えられたアドバイスと矛盾しています。正解は何ですか?どちらも搭載したパソコンを持っていないので、テストできません。

4

2 に答える 2

2

他に失敗した場合は、コマンドラインからそれがshutdown.exe -a;であることを覚えておいてください。たぶん、 Processクラスを使用してこれを呼び出すことができます。

編集します。Processクラスについて言及するとき、質問は.NETプログラミングに関するものだと思いましたが、今では、質問にもタグにも.NETが言及されていないことがわかります。とにかく、他のプログラミング環境から実行可能ファイルを実行する方法もあると思います。

于 2009-12-15T10:29:49.880 に答える
2

一部のアプリケーションでは、WM_QUERYENDSESSION の処理が間違っていました (DefWindowProc に渡されず、シャットダウンをブロックするつもりはなかったにもかかわらず、間違って 0 が返されました)。そのため、MS は Vista でそれを変更しました。ShutdownBlockReasonCreate()を呼び出す必要があります。

@Konamiman: shutdown.exe -a は「スケジュールされた」シャットダウンを中止しますが、誰かが ExitWindowsEx() を呼び出して「通常の」シャットダウンは中止しません

于 2009-12-15T15:09:03.420 に答える