2011-09-24 23 views
15
仮想マシンが動作している間、私はシャットダウンWindowsにしようとすると、

VMware Workstationは何かがかなりクール行います防ぐWindowsのシャットダウン

VMWare prevents Windows shutdown with a custom message

通常は、私たちは「このプログラムは、Windowsを防止している参照してくださいね新しい「1仮想マシンが使用中」ではなく、「シャットダウンから」メッセージが表示されます。

これはどのようにVMWareが行いますか?私はGoogle上でAPIを見つけることができませんでした。

+0

コマンドラインでshutdownコマンドを使用すると、表示するカスタムシャットダウンメッセージを指定できますが、おそらくこれは関連していますか? – stijn

答えて

11

Vista hereで導入された変更についてのすべてを読むことができます。あなたは本当にその記事を非常に慎重に読むべきです。

あなたが探しているAPIはShutdownBlockReasonCreate,ShutdownBlockReasonDestroyShutdownBlockReasonQueryです。これらのAPIはVista/2008サーバでのみ使用可能です。 2000/XPでフォールバックの動作を実装する必要があります。

シャットダウンをブロックする必要がある場合は、ShutdownBlockReasonCreateにメインウィンドウにハンドルを渡し、その理由を文字列として渡します。この文字列は、シャットダウンでブロックされたダイアログに表示されるものです。つまり、スクリーンショットで「1台の仮想マシンが使用中です。

シャットダウンをブロックする操作が完了したら、ShutdownBlockReasonDestroyを呼び出します。

すべてのピースを合わせるには、WM_QUERYENDSESSIONを実装する必要があります。これはシャットダウンを実際にブロックする部分です。

XPの場合は、WM_ENDSESSIONにも応答する必要があります。アプリがシャットダウンをブロックした場合、その理由を示すメッセージが表示されます。そうしないと、コンピュータがシャットダウンの指示を無視している理由について、ユーザは頭を傷つけられます。

+1

[WM_QUERYENDSESSIONへの返信を忘れないでください。](http://msdn.microsoft.com/en-us/library/ms700677(v = vs.85).aspx) – bzlm

+0

ありがとうございます!私はGoogleを介してそれらを見つけましたが、ドキュメンテーションはUIに影響することに注意する方法ではあまり役に立ちませんので、メッセージボックスを使用してメッセージが表示されると思いました。 – foxy

+1

キーは、解答の最初の文章にリンクしている話題の記事です。シャットダウンを処理するためのガイドです。 APIのドキュメントは、常にもう少し簡潔です。 –

関連する問題