あなたの「必」の書き順を教えてください

ネットを検索してたら、PCをシャットダウンさせるというコード
Set objSystemSet = GetObject("winmgmts:{impersonationLevel=impersonate,(Shutdown)}").InstancesOf("Win32_OperatingSystem")
For Each objSystem In objSystemSet
objSystem.Win32Shutdown 1
Next
をみつけたので以下のように試してみました。

Sub TEST()
Application.OnTime Now + TimeValue("0:05:00"), "PC_ShutDown"
End Sub

Sub PC_ShutDown()
Set objSystemSet = _
GetObject("winmgmts:{impersonationLevel=impersonate,(Shutdown)}") _
.InstancesOf("Win32_OperatingSystem")

For Each objSystem In objSystemSet
objSystem.Win32Shutdown 1
Next

End Sub

ところが実行すると、ログオフし、画面に、「コンピュータの電源を切ることができます」と表示されるのですが、そこでとまってしまいます。
PCの電源ボタンも長押しないときかなくなります。
自動で電源は切れないのでしょうか?

A 回答 (3件)

こんばんは。



WMIで、Office は終了して、最後まで動いているのなら、「自動で電源は切れない」というのは、

objSystem.Win32Shutdown 1

引数が違うような気がしますが。

ExitWin

 EWX_LOGOFF  = 0 ログオフ
 EWX_SHUTDOWN = 1 シャットダウン  ←電源が切れる状態
 EWX_REBOOT  = 2 リブート
 EWX_FORCE  = 4 強制       ←必要?
 EWX_POWEROFF = 8 パワーオフ    ←必要?

たぶん、

 objSystem.Win32Shutdown 4 + 8

ではないかと思います。

ただ、そのような内容のコードは、かなりデリケートな部分を含んでいますから、終了時の状態を監視せずに、終了することは、避けたほうがよいのではないか、と思います。
    • good
    • 0
この回答へのお礼

ありがとうございました。
objSystem.Win32Shutdown 4 + 8
で、完璧に作動しました。

> 終了時の状態を監視せずに、終了することは、避けたほうがよいのではないか、と思います。

はい、普段に使おうとは思っていません。
でも、どういう不具合が考えられるのでしょうか?

お礼日時:2006/09/19 10:45

こんにちは。

Wendy02です。

>でも、どういう不具合が考えられるのでしょうか?

ご存知だとは思いますが、終了時に、その設定を保存するのは普通ですが、場合によっては、終了時、ダウンロードデータを更新していることがありますね。また、メモリ上に、プロセスを残したり、ネットワークでトラブることがあるようです。たぶん、セキュリティ系の関係じゃないかと思います。起動して何も触らないまま、そのままExitWin することはないわけで、通常のパターン(XP?)なら、問題はないと思うものの、私などは、最後の終了までをメッセージなど何も出ないことを確認しないと、気に掛かるわけです。その監視自体を、マクロで行わせるには、ちょっと荷が重そうです。
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございました。
では、エクセル以外のプログラムはすべて終了したことを確認してから使用したいと思います。
お手数をおかけしました。
ありがとうございます。

お礼日時:2006/09/19 12:47

実証したわけでは有りませんが


>objSystem.Win32Shutdown 1
 objSystem.Win32Shutdown 8
かも?
http://www.wmifun.net/sample/win32_operatingsyst …

ただアプリケーションの中で、更新後に変更を保存してないものがあったりすると
シャットダウン処理が中断してしまったり、
ACPIの設定で出来ないものは有るかもしれません。

WindowXP Pro でしたらコマンドプロンプトの Shutdown をShellで呼び出しても・・
他のPCのシャットダウンも(一部)出来ますのでお試しあれ。
    • good
    • 0
この回答へのお礼

ありがとうございました。
objSystem.Win32Shutdown 8
で通常はOKでしたが、スクリーンセイバー(パスワード付き)が起動していると止まってしまいました。

お礼日時:2006/09/19 10:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報