Windowsがシャットダウンしようとしたときにシャットダウン作業を一時停止して、コードを実行してまたシャットダウンを続行したいのですがどのような方法があるでしょうか。

A 回答 (3件)

VBのイベントではなく、Windowsの生の(?)イベントである


"WM_QUERYENDSESSION"を検出して処理すれば大丈夫だと思います。
これは、Windowsが終了するときに各アプリケーションに、
「Windowsが終了するけど良い?」という問い合わせをしてくる
イベントです。
VBで実現するためには「コールバック関数の登録」という処理
をしなくてはなりません。
参考URLのページがずばりあなたの要求を満たすと思います。

参考URL:http://tokyo.cool.ne.jp/kanain/APIHTM/GetMsg.html
    • good
    • 0

Cancel = 1が余分でした

この回答への補足

回答ありがとうございました。でも、やってみたところコードを実行する間もなくシャットダウンされてしまいました。
どうしましょう。

補足日時:2001/06/22 18:24
    • good
    • 0

VBで常駐プログラムを作るなら、これでどうでしょう



Private Sub Form_Load()
Hide
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
if(UnloadMode=vbAppWindows)then
'ここに終了処理
Cancel = 1
End If
End Sub
    • good
    • 0

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q遠隔操作でシャットダウンするコマンドあるいはその他の方法

LANでつながったPCを遠隔操作でシャットダウンさせようと考えています。
特にシャットダウン用のソフトを使わないでも、Windowsに最初から備わっている機能でシャットダウンさせる方法は無いでしょうか?

また、学校のPCを使っていると「このコンピュータはネットワークの管理者によりシャットダウンが開始されました。あと○分でシャットダウンされます。終了される前にデータを保存して下さい。」というような趣旨の表示が出て、ネットワーク管理者が一斉に管理下のPCを遠隔操作でシャットダウンしてしまうのですが、これはどういう方法でやっているのでしょうか?

もしできるとすれば、このあと○分でシャットダウンというのを自分で好きなように30分とか120分とか指定することは出来るのでしょうか?

またシャットダウンではなく、スタンバイや休止状態にさせることも可能なのでしょうか?

ご回答よろしくお願いします。

Aベストアンサー

XP でしたら標準でリモートシャットダウンコマンドを持っています。
下記の情報を参照してみてください。

http://www.atmarkit.co.jp/fwin2k/win2ktips/374rmtshutdown/rmtshutdown.html

ちなみに

> 「このコンピュータはネットワークの管理者によりシャットダウンが開始されました。あと○分でシャットダウンされます。終了される前にデータを保存して下さい。」

というメッセージは上の方法でシャットダウンをかけたときに表示されるものです。

Qシャットダウンの関数

VB6.0で、PCのシャットダウンを行う関数ってありますでしょうか?
ご回答よろしくお願い致します。

Aベストアンサー

下記。

参考URL:http://homepage1.nifty.com/MADIA/vb/API/VBWINEXIT.htm

QQNXのシャットダウンコマンド

Linuxは、halt -p というコマンドで、
シャットダウンしつつ電源のパワーオフまで可能ですが、
QNXにはパワーオフまで出来るコマンド及びオプションは無いのでしょうか?

Aベストアンサー

ざっと見た感じ、電源断までを一括で行うコマンドは、標準ではなさそうですね。
QNX自身が組込み用のOSなので、APMやACPIはサポートしていないようです。

回答になっていませんが、参考URLを付けときます。

参考URL:http://www.qnx.co.jp/developers/docs/6.3.0SP1JP/neutrino_ja/sys_arch/power.html?printable=1%22

Qシャットダウンスクリプトの記述

ドメインに参加している WinXP クライアントから、ワークグループ環境の複数台の Windows Server 2003 (主に) に対して ping を実行し、ping に対して応答があった場合はシャットダウンするスクリプトを記述したいと考えています。

# ワークグループ環境の Windows Server 2003 は検証環境で、社内セキュリティポリシーの運用上ドメインに参加できません。

この場合、
1. 複数のマシンに ping を打つ
2. 1 で応答がかえってくれば管理者の資格情報を使用してログイン
3. シャットダウンを実行
という流れになると思います。

そして、最終的には 1 が成功した場合に If 構文で 2、および、3 を実行する、という
ように書けば一連の処理は成功すると考えています。

現在上記 1~3 の処理で細分化し、それぞれについて動作確認をとっています。
しかし、2、および、3 を実行してもうまくいかないため、これらについて伺いたく
質問させていただきます。

2 について

以下の構文を組んでいますが、vbs を実行すると、後述のエラーダイアログが表示されます
(対象 PC やアカウント名などはダミーとご認識ください)。
別の資格情報 (接続先マシンの管理者アカウント) を指定して接続できるコードをご教授ください。

-----
Const WbemAuthenticationLevelPktPrivacy = 6

strComputer = "atl-ws-01"
strNamespace = "root\cimv2"
strUser = "Administrator"
strPassword = "4rTGh2#1"

Set objWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = objwbemLocator.ConnectServer (strComputer, strNamespace, strUser, strPassword)
objWMIService.Security_.authenticationLevel = WbemAuthenticationLevelPktPrivacy

Set colItems = objWMIService.ExecQuery ("Select * From Win32_OperatingSystem")
For Each objItem in ColItems
Wscript.Echo strComputer & ": " & objItem.Caption
Next
-----

エラー : RPC サーバーを利用できません。
コード : 800706BA
ソース : SWbemLocator

3 について

以下の構文を組んでいますが、エラーは表示されないものの、シャットダウンが開始されません。

-----
On error resume Next

Const LogOff = 0 'ログオフ
Const REBOOT = 2 '再起動
Const SHUTDOWN = 8 'シャットダウン

Dim objWMIService
Dim colOperatingSystems
Dim objOperatingSystem
Set objWMIService = GetObject("winmgmts:{impersonationLevel= impersonate,(Shutdown)}\\" & strComputer & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
objOperatingSystem.Win32Shutdown(SHUTDOWN)
Next
Set objWMIService = Nothing
Set colOperatingSystems = Nothing
Call ErrorCheck
End Function
-----

また、試しに objNetwork.MapNetworkDrive を使用してサーバーの IPC$ に接続しログインした後に上記処理を試行しましたが、
シャットダウンが進みませんでした。

何卒よろしくお願いいたします。

ドメインに参加している WinXP クライアントから、ワークグループ環境の複数台の Windows Server 2003 (主に) に対して ping を実行し、ping に対して応答があった場合はシャットダウンするスクリプトを記述したいと考えています。

# ワークグループ環境の Windows Server 2003 は検証環境で、社内セキュリティポリシーの運用上ドメインに参加できません。

この場合、
1. 複数のマシンに ping を打つ
2. 1 で応答がかえってくれば管理者の資格情報を使用してログイン
3. シャットダウンを実行
という流れになる...続きを読む

Aベストアンサー

MapNetworkDrive はファイル共有サービスだから RPC とは別では?
win32shutdown rpc ファイアウォール
あたりのキーワードで検索してみてはどうでしょう。

Qシャットダウン時にコマンド実行

OS:WindowsNT

OSをシャットダウンすると同時に、とあるコマンドを
実行できないものかとツール等を検索していますが、
なかなか見つかりません。
どのような方法があるのか、ご存知の方教えてください。

Aベストアンサー

ツール的にはベクターなどで調べればあるのですが
OS自体に備わっている内部命令(API)に
確かにシャットダウン前にコマンド実行する命令は存在しておりますが、確実に動作するとは限らなかったと覚えています<サポートも積極的ではなかった覚えが・・・

時間のかかる処理や重要な処理をシャットダウン時に
行うのでしたら止めといた方がよいかと・・・

Qパソコンのリモート起動・シャットダウンの方法について

VB:VB6.0sp5

端末A
os:windows2000pro
IP:192.168.1.10
Physical Address:00-11-22-33-44-55
端末B
os:windows2000pro
IP:192.168.1.11 の場合、
Physical Address:00-12-34-56-78-90

(1)VBプログラムでどのようにすれば良いのでしょうか?

(2) また、RS-232C や USB 等でも可能でしょうか?
 何か便利ツール等ございましたらご紹介くださいます様

よろしくお願いいたします

Aベストアンサー

http://oshiete1.goo.ne.jp/kotaeru.php3?q=435498
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1186493

Q自動で、普通のユーザーでコマンドラインからシャットダウンできる方法

CentOS5で、root権限でなく普通のユーザーでコマンドラインからシャットダウンできる方法が知りたいです。
sudoは、ルートのパスワードを手で入れる必要があり、自動的に動作させるときに困ります。
何か良い方法はありますか?
一応、rootのパスワードは知っている条件です。
普通のユーザーがシャットダウンできるのはおかしな話ですが、よろしくおねがいします。

Aベストアンサー

ログインとログアウト(4:ログアウトとユーザーの使い分け)
http://itpro.nikkeibp.co.jp/article/COLUMN/20060306/231763/
> ユーザーのパスワードを入力しなくても実行できる方法も
>あります。それには,visudoコマンドで編集画面を開いて,
>以下のように追加します。
>jun snobird= NOPASSWD: /sbin/shutdown -h now

QOSシャットダウン時の常駐アプリ終了について

現在VB2005にて常駐アプリの開発を行っています。
OSはWindowsXPです。
起動はOS起動時にスタートアップより起動するのですが、
OSのシャットダウン時に常駐アプリが終了していない為、
「このプログラムからの応答がありません(待機、終了、キャンセル)」が表示されます。
この方法を回避するには、シャットダウンを常駐アプリ側で検知してアプリ自身が終了処理をすると思いますが、方法がよくわかっていません。
http://dobon.net/vb/dotnet/system/sessionending.html
↑のURLを参照してみたのですが、シャットダウン時にメッセージの表示はされるのですが、メッセージ表示部をアプリ終了処理に置き換えても、終了処理が行われませんでした。
どなたか、お分かりになる方ご教授いただければと思います。

Aベストアンサー

クラスの生成で外部アプリを起動ってインスタンスの事です?
Newメソッド内でやってるなら、あまりよろしくないので今後はやめた方がよいかと・・・

それはさておき、外部アプリの終了ですが
恐らく新しいプロセスを生成して実行してると思います。
そのプロセスをkillメソッドでやっつけてやればいけませんか?
oboroxxさんの回答と同じですが。

Q指定時間後にコマンド発効後にシャットダウンするソフト

環境:windows7 64bit


指定時間後(分数)に指定したコマンドを発効後にシャットダウンを行う
フリーソフトはありませんでしょうか。

※タスクでやればいいと思いますが、ソフトがありましたらそちらで
行いたいと思い質問させていただきました。

Aベストアンサー

「終了・シャットダウン - k本的に無料ソフト・フリーソフト」
http://www.gigafree.net/system/shutdown/

「単機能ツール(Windows終了)」がお望みの機能を一番簡単に実行出来るソフトと思います。

QVB6でシャットダウン、ログオフを感知

VB6でwindowsがシャットダウン、ログオフ、再起動する前に特別な処理をしたいのですがVB6シャットダウンを感知する方法がわかりません(ToT)
知っている方がいましたら教えて下さいよろしくお願いします。
※windowsは2000proです。

Aベストアンサー

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If (UnloadMode = vbAppWindows) Then
'特別な処理
End If
End Sub

UnloadModeがvbAppWindowsなのは、シャットダウン、ログオフ、再起動の場合のみと思いますが、違いますか?


人気Q&Aランキング

おすすめ情報