スタンバイ状態からの復帰、できれば、休止状態からの復帰時に、
特定アプリケーションを実行するような設定を行いたいのですが、

プログラム、特にVBで実現したく思うのですが、指定時間になったら、
スタンバイや休止状態から復帰し、特定プログラムを実行するプログラムは
実現可能でしょうか。もし、可能でしたら、それに必要なAPI関数などを
教えていただけると幸いです。

やはり休止状態からの復帰を特定時刻に行うというのは、プログラム上で
実現するのは難しいでしょうか。

A 回答 (2件)

すいません。

。。回答ではないです。

質問のタイトルは「特定時間の復帰」質問内容は「スタンバイ/休止状態解除時の認識」となってますが、どちらがしたいのかがわかりません。
復帰を行いたいのですか?それとも、復帰したのを認識したいのですか?

特定時間の「休止状態からの復帰」は確かに無理っぽいですね。

ちなみに調べたところ、あくまでたぶんなのですが・・・
アプリでスタンバイ状態から、復帰できるような感じです。で、休止状態になる前に休止状態を拒否する定数を送ると休止を回避できるようです。
これが何を意味するかというと、WINDOWSから「これからスタンバイ/休止状態になる」というのを受け取ることができ、そのあとのイベントは「スタンバイ/休止状態」からの復帰後のイベントが発生していると言えます。
だから「スタンバイ/休止状態からの復帰」は認識可能です。


たぶんSendMessageでも可能ではないかと思うのですが・・・かなり自信ありません。
定数はおそらく
Const WM_POWERBROADCAST = &H218
Const PBT_APMQUERYSUSPEND = &H0
Const PBT_APMQUERYSTANDBY = &H1
Const PBT_APMQUERYSUSPENDFAILED = &H2
Const PBT_APMQUERYSTANDBYFAILED = &H3
Const PBT_APMSUSPEND = &H4
Const PBT_APMSTANDBY = &H5
Const PBT_APMRESUMECRITICAL = &H6
Const PBT_APMRESUMESUSPEND = &H7
Const PBT_APMRESUMESTANDBY = &H8
Const PBTF_APMRESUMEFROMFAILURE = &H1
Const PBT_APMBATTERYLOW = &H9
Const PBT_APMPOWERSTATUSCHANGE = &HA
Const PBT_APMOEMEVENT = &HB
あたりだと思います・・・たぶん・・・

しかし、いろいろなメーリングリストを見てると、「NTでは無理だ」とか「DOS/Vのノートではトンチンカンな定数が来る」とか色々言われていて、何が正しいのか検証できません。
もう少し調査が必要です。
    • good
    • 0

スタンバイはともかく、休止状態は完全に電源を切ってしまうので、内部のプログラムがどうとか言うのは難しそうですね。



Wake On LANって知ってますか?
LAN上のパソコンが電源の入っていないパソコンにメッセージを送って起動させると言うものです。
そういうAPIがあるとかないとかは聞いたことがないですが、その辺で攻めてみてはどうでしょうか。
もちろん、復帰時に何かさせるのはLAN上のパソコンになってしまいますが。
さらに、Wake On LANに対応したネットワークカードやマザーボードが必要です・・・。
    • good
    • 0

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

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

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

Qスリープや休止状態 休止されない

デスクトップパソコンです。
スリープや休止状態にしていても、いつの間にかパソコンがついています。

スリープや休止状態にして、モニタの電源を切っているのですが、
モニタの電源を入れると、スリープや休止状態をする前の画面になっています。

スリープや休止状態をしても通常電源ボタンを押さないと、スリープや休止状態の前の画面にならないですよね?

Aベストアンサー

> スリープや休止状態にしていても、いつの間にかパソコンがついています。

いろいろなことが考えられます。
スリープや休止状態を管理しているのは、コントロールパネルの電源オプションです。
また、電源管理のコマンドでの操作は、コマンドプロンプトを右クリックして、「管理者として実行」をクリックします。
powercfg /?
と入れ、いろいろなパラメータがあることを知っておくと良いと思います。

スリープに限って言えば、
powercfg /lastwake
Enter キーを押す。
と入れ、最後のスリープ状態の解除元に関する情報を表示させると分かると思います。
操作して何かメッセージが出てきても、不明な場合は、下記の操作を再度行い、そのリスト(lastwake.txt)をメモ帳で開き、ここに「補足」して貰うとありがたいです。
powercfg /lastwake > lastwake.txt
Enter キーを押す。

また、スリープや休止状態が解除されるのが、夜中3:00頃と決まっていれば、「補足」して貰うと、詳細を記載したいと思います。

Q休止状態から自動で復帰するようにして休止させる方法を教えて

VB.NET、WinXPなのですが、
休止状態にする際に、自動復帰するタイマーを
セットして休止状態に入りたいのですが、
何時間後という設定はどのようにしたら良いでしょうか。
よろしくおねがいいたします。

Aベストアンサー

>自動復帰するタイマーをセットして休止状態に入りたいのですが
そのような機能を知らないのですが、、、

あなたがお持ちのPCにはそのような機能があるのですか?
もしあるのであれば、ソフトで行っていますか?
何か特別な周辺機器で行ってますか?

もし機能として存在しているのであれば、可能だと思います。ただハードで行われている場合は、そのインターフェースが公開されていないと実現が難しいと思います。

QWindows7βで、スリープ・休止使えなくなりました

■手持ちのXPタイプのノートPC(NEC LN300AD2)に7を入れてみました。
■インストール当初には休止状態を使えたのですが、スリープが選択肢にありませんでした。
■スリープを使うべくコントロールパネル→電源オプション等を触っているうちに、スリープも選択肢に現れました。
ですがグレーアウトになって選択できません。
■またそうこうしている内に、休止状態までもがグレーアウトになってしまいました。

■■つまり現在スリープ・休止共に表示されてはいるものの、グレーアウトになってしまい実行できない状態です。

■出先で使う際いつも電池の持ちを気にしながら使うので、特にスリープ できれば休止も自由に使いたいと思っています。
■■■諸先輩方からの「スリープ・休止を使用するためのアドバイス」をお願いします!

Aベストアンサー

OSの不具合と言うより、単にOSに対応したデバイスドライバがないというだけだと思います。
専用ドライバが無いときのごく普通の現象かと。

QVB2010でスタンバイや休止モードの復帰検出

Visual Basic 2010で作ったプログラム(exeファイル)を実行中にスタンバイまたは休止モードに移行し、その後そのモードから復帰した時に発生するイベント、または復帰を検出する方法は有りませんか?(Formはアクティブになっていません。)

Aベストアンサー

こんな感じで。

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
  AddHandler Microsoft.Win32.SystemEvents.PowerModeChanged, AddressOf SystemEvents_PowerModeChanged
End Sub

Private Sub SystemEvents_PowerModeChanged(ByVal sender As Object, ByVal e As Microsoft.Win32.PowerModeChangedEventArgs)
  If e.Mode = Microsoft.Win32.PowerModes.Resume Then
    Label1.Text = "復帰"
  End If
End Sub

Q次の状態⇒スリープ、休止状態、シャットダウンの違い

タイトルの件、質問いたします。

電源オプションに、スリープ、休止状態、シャットダウンとありますが
これは、それぞれ、何が違うのでしょうか?

得に、スリープと休止状態にて、電気を使っているのかが気になります。

以上、ご存知の方、いらっしゃいましたら、宜しくお願いします。

Aベストアンサー

前出どおりですが。

スリープ=HDD,LCDを止めているけど、「起動している」

休止状態=今開いているウインドウの状態を記憶したうえで、「シャットダウンしている」


つまり、休止状態は電源的に「シャットダウンしている」んです。ACアダプタとバッテリーをはずしても大丈夫。
わたしは再起動以外でシャットダウンしたことがありません。そう考えると便利ですよ。

QOSが休止状態から復帰時のUSB接続プリンタ制御

USB接続のプリンタをVBにて制御しています。
Windows(Xp/Vista/7)が、休止状態から復帰した場合に、USBプリンタの電源OFF/ONを行わないと動作しなくなります。USBプリンタのアクセスは、ベンダーIDよりDeviceInterfaceを取得し、CreateFileでオープンを行いHandleを取得し、ReadFile/WiteFileでAccessしています。
通常の電源OFF/ONでは、上記の手順でUSBプリンタを制御できますが、休止状態から復帰した場合は、CreateFileで取得したHandleで、WriteFileによる通信を行っても無応答状態となります。

USB statusを送信し、USBプリンタをリセットが必要と思われますが、VBでUSBStatusの送信する手段を教えてください。(電源ステータスを制御する必要があると思われる為)

※休止状態に入るときに、Handleをcloseし、復帰時、ベンダーIDより、Device Interfaceを取得して処理しています。

以上、宜しくお願い致します。

Aベストアンサー

回答になるが分からないのですが一応書いておきます。
Microsoftがdevconというツールを提供しています。
詳しくは
http://support.microsoft.com/kb/311272/ja
を参照してください。

ただ残念なのはサポート範囲が狭いことです。Windows2000以降のx86とIA64(x64ではない)

ご検討ください。

Qスリープと休止状態どちらが節約か

お世話になります。
パソコンは起動時に電力をたくさん消費するため、2時間以内にまた使うなら電源を切らずに、スリープにしたほうがいいと聞きました。
私のパソコンは「スリープ」と「休止状態」があるのですが、どちらが節約になるのでしょうか?

「スリープ」は「すばやく作業を開始できるように、セッションにメモリを保持してコンピュータを低電力の状態にします」とあります。
「休止状態」は「セッションを保持して電源を切ります。コンピュータの電源を入れたときにセッションは復元されます」とあります。

何時間以内にまた使うならスリープ、何時間以内なら休止状態、という感じで教えていただけたらとってもたすかります。

あと、いつもスリープにするときはPCのコンセントを抜いていますが、問題ないでしょうか?
さしっぱなしだと、どんどん充電してしまっている気がして・・・。

よろしくお願いします。

Aベストアンサー

パソコンで普通に言われるのは

スリープ:
この場合は、パソコン自体はある意味動いています(普通の意味は動いていませんが)
なので、通常動作よりははるかに少ないものの、電力を消費します。
ただし、スリープに入るときと復帰するときに、特に余分な電力は消費しません。

休止状態:
この場合、パソコンの中身を、一度全部ハードディスクに保存した後、電源を切ります。
なので、休止状態のパソコンは電源は切れている状態です。
ただし、休止状態に入るときと、復帰するときに、一気にハードディスクへのアクセスが発生します。
これにより、そこそこの電力を消費する異なります。

ついでに、普通の起動:
これも、パソコンの中身を一度ハードディスクから読み込んで、パソコンが動く状態になります。
これから考えると、休止状態と変わらない気がしますが、「休止状態」というのが、たとえば机の上の本やノートをそのままごっそり保存したり、復帰させたりするのに対して、「普通の起動」は、本棚から本を取り出して、必要なページを開いて、ノートのページを開いて……。と、寿日作業が必要になるので、休止状態よりは、多くの電力を消費します


このことから、使わない時間が長いほど休止状態の方が有利とは言えますが、実際に、ハードディスクがどの程度電力を消費するかで変わってきますので、これまた、一概には言えません。
2時間というのも、目安でしかないですし。

ただ、たとえば、「2時間以内なら、スリープのほうがエコ」というのを正しいとするのなら、少なくとも、休止状態からの復帰の方が通常の起動よりも多くの電力を必要としますから、(エコという側面では)休止状態の出番はないかと思います。

あと、スリープの時に電源を抜くのは、最近のパソコンであれば余り良くないかもしれません。
現在主流のリチウムイオン電池は、
・充放電回数で寿命が決まる
・満充電の期間が長いと寿命が短くなる
という2つの要素を持っています。

最近、「満充電だと寿命が短くなる」というのに対応して、あえて、少なめに充電するという機種があります(または、そういう指定ができる機種があります)
こういう機種であれば、コンセントをつないでも問題ないですし、むしろ、わずかでもスリープ中に電力を消費するわけですから、次にコンセントにつないだときに、充電に移る可能性があります。
そうすると、(これまたわずかですが)電池の寿命を縮めることになります。

パソコンで普通に言われるのは

スリープ:
この場合は、パソコン自体はある意味動いています(普通の意味は動いていませんが)
なので、通常動作よりははるかに少ないものの、電力を消費します。
ただし、スリープに入るときと復帰するときに、特に余分な電力は消費しません。

休止状態:
この場合、パソコンの中身を、一度全部ハードディスクに保存した後、電源を切ります。
なので、休止状態のパソコンは電源は切れている状態です。
ただし、休止状態に入るときと、復帰するときに、一気にハードディスクへの...続きを読む

Qサスペンド(休止やスタンバイ)のイベントを得る方法

WinXPとVB.NETで休止やスタンバイのイベントを受け取るにはどうしたらよいでしょうか?

休止(スタンバイ)に移行しても良いですか?
のメッセージを出るようにしたいのですが、
良い方法があったら教えてください。

Aベストアンサー

>WinXPとVB.NETで休止やスタンバイのイベントを受け取るには?
WndProc (WindowsProcとも言われたりします)
を利用します。

ただ、これはシステムフックをする事になるので、ここでは
1・重い負荷を与える処理
2・ユーザからの入力を待機する処理
はご法度です!!


もしそのような処理を入れた場合、
1・システムが次の処理を走らすことができず、動作が不安定になる
2・システムが次の処理を走らすために、アプリ側で捕まえられた処理をタイムアウトとして扱い、アプリ側の変更を受け付けなくなる
という事がありえます。


これを回避するには処理を分割しましょう。↓にまとめます。

1.休止orサスペンド要求イベントを認識する
2.休止orサスペンド要求イベントの継続を破棄する
3.ユーザに休止orサスペンドがあったことを通知する
4.ユーザに休止orサスペンドを行うかを問い合わせをする
5.ユーザへの問い合わせ結果によって、処理を行う

参考[休止状態/サスペンドの破棄]を応用
http://www.microsoft.com/japan/msdn/vbasic/migration/tips/PowerMode/

参考[休止状態/サスペンドの実行]を応用
http://www.vbvbvb.com/jp/gtips/0301/gSetSystemPowerState.html

そこで問題となるのが、休止orサスペンドのどちらの要求が送られてきているのかがわからないということです。こればかりは仕方がありません。
なので、どのような処理にするかはユーザに任せてしまうか、サスペンド限定するなどの対応が必要になります。

電源イベント通知を即座に行わず、後で通知する方法は、私の場合であれば、タイマを利用する方法しか思いつきませんが、もっとよい方法があるかも知れません。



以下が、サンプルです。
WindowsApplication1.vbproj
├Form1.vb(コントロールは、何も置かないでいいです)
└Class1.vb




※Form1.vb
--------------------------------------------------------------------------------
Public Class Form1
  Inherits System.Windows.Forms.Form

  Private WithEvents m_obj休止 As New 休止監視()
  Private m_objListデバッグ用 As New ListBox()

#Region " Windows フォーム デザイナで生成されたコード "
~~~ここは略します~~~
#End Region

  'イベント/フォーム/ロード
  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    'デバッグ用のリストボックスの初期設定
    Me.Controls.Add(m_objListデバッグ用)
    m_objListデバッグ用.Size = Me.ClientSize
  End Sub

  'イベント/休止オブジェクト/発生処理
  Private Sub obj休止_発生処理(ByVal モード As 休止監視.処理モード) Handles m_obj休止.発生処理
    '発生したイベント内容をデバッグ用リストボックスに追加
    Dim l_strワーク As String = IIf(モード = 休止監視.処理モード.再開, "再開", "休止")

    m_objListデバッグ用.Items.Add(System.DateTime.Now.ToString & " " & l_strワーク)
    m_objListデバッグ用.SelectedIndex = m_objListデバッグ用.Items.Count - 1
  End Sub

  'イベント/休止オブジェクト/発生通知
  Private Sub obj休止_発生通知(ByRef モード As 休止監視.休止モード) Handles m_obj休止.発生通知
    'サスペンドor休止状態が起ころうとしたことを通知
    'さらに、遂行する処理を返却する
    Dim l_msgRet As Microsoft.VisualBasic.MsgBoxResult
    Dim l_strMsg As String = ""

    l_strMsg &= "は い: サスペンド" & vbCrLf
    l_strMsg &= "いいえ: 休止状態" & vbCrLf
    l_strMsg &= "CANCEL: 何もしない" & vbCrLf

    l_msgRet = MsgBox(l_strMsg, MsgBoxStyle.YesNoCancel Or MsgBoxStyle.Question, "休止モード継続お知らせ")
    Select Case l_msgRet
      Case MsgBoxResult.Yes
        モード = 休止監視.休止モード.サスペンド
      Case MsgBoxResult.No
        モード = 休止監視.休止モード.休止状態
      Case MsgBoxResult.Cancel
        モード = 休止監視.休止モード.未処理
    End Select
  End Sub

  'イベント/システム/WindowsProc
  Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
    If Not m_obj休止.メッセージ処理(m) Then
      Return
    End If
    MyBase.WndProc(m)
  End Sub

End Class



※Class1.vb
--------------------------------------------------------------------------------
Imports System
Imports System.Runtime.InteropServices
Imports Microsoft.Win32

Public Class 休止監視

#Region "属性"
  Public Event 発生通知(ByRef モード As 休止モード)
  Public Event 発生処理(ByVal モード As 処理モード)

#Region "定数"
  Private Const WM_POWERBROADCAST As Integer = &H218
  Private Const PBT_APMQUERYSUSPEND As Integer = &H0
  Private Const BROADCAST_QUERY_DENY As Integer = &H424D5144
#End Region

#Region "型"
  Private Structure tagLUID
    Dim LowPart As Integer
    Dim HighPart As Integer
  End Structure
  Private Structure LUID_AND_ATTRIBUTES
    Dim Luid As tagLUID
    Dim Attributes As Integer
  End Structure
  Private Structure TOKEN_PRIVILEGES
    Dim PrivilegeCount As Integer
    Dim Privileges As LUID_AND_ATTRIBUTES
  End Structure
#End Region

#Region "列挙"
  Public Enum 休止モード
    未処理
    サスペンド
    休止状態
  End Enum
  Public Enum 処理モード
    再開
    休止
  End Enum
#End Region

#Region "API"
  <DllImport("advapi32.dll", SetLastError:=True)> _
    Private Shared Function OpenProcessToken( _
          ByVal ProcessHandle As IntPtr, _
          ByVal DesiredAccess As Integer, _
          ByRef TokenHandle As IntPtr _
        ) As Boolean
  End Function

  <DllImport("advapi32.dll", SetLastError:=True)> _
  Private Shared Function LookupPrivilegeValue( _
          ByVal pSystemName As String, _
          ByVal lpName As String, _
          ByRef lpLuid As tagLUID _
        ) As Boolean
  End Function
  <DllImport("advapi32.dll", SetLastError:=True)> _
    Private Shared Function AdjustTokenPrivileges( _
          ByVal TokenHandle As IntPtr, _
          ByVal DisableAllPrivileges As Boolean, _
          ByRef NewState As TOKEN_PRIVILEGES, _
          ByVal BufferLength As Integer, _
          ByVal PreviousState As IntPtr, _
          ByVal ReturnLength As IntPtr _
      ) As Boolean
  End Function
  <DllImport("kernel32.dll", SetLastError:=True)> _
  Private Shared Function SetSystemPowerState( _
          ByVal fSuspend As Boolean, _
          ByVal fForce As Boolean _
      ) As Boolean
  End Function
  <DllImport("user32.dll", SetLastError:=True)> _
  Private Shared Function ExitWindowsEx( _
          ByVal flag As Integer, _
          ByVal reserved As Integer _
      ) As Boolean
  End Function
#End Region

#End Region

#Region "メソッド"

#Region "メソッド_PUBLIC"
  'サスペンドを行う
  Public Sub 実行_サスペンド()
    Call 実行_休止処理(True)
  End Sub
  '休止状態を行う
  Public Sub 実行_休止状態()
    Call 実行_休止処理(False)
  End Sub

  'WindowsProc処理
  Public Function メッセージ処理(ByRef m As Windows.Forms.Message) As Boolean
    Dim l_blnRet As Boolean = True

    If (m.Msg = WM_POWERBROADCAST) And (m.WParam.ToInt32 = PBT_APMQUERYSUSPEND) Then
      l_blnRet = False
      '休止イベントの破棄
      m.Result = New IntPtr(BROADCAST_QUERY_DENY)

      'この中でイベントを発生させず、タイマを生成し、そのタイマイベント内部で処理を行う
      Dim l_objタイマ As New tmpタイマ()
      AddHandler l_objタイマ.Elapsed, AddressOf objタイマ_Elapsed
    End If

    Return l_blnRet
  End Function
#End Region

#Region "メソッド_PRIVATE"
  '休止処理メイン
  Private Sub 実行_休止処理(ByVal l_blnサスペンド As Boolean)
    Const TOKEN_QUERY As Integer = &H8
    Const TOKEN_ADJUST_PRIVILEGES As Integer = &H20
    Const SE_SHUTDOWN_NAME As String = "SeShutdownPrivilege"
    Const SE_PRIVILEGE_ENABLED As Integer = &H2

    Dim l_blnRet As Boolean

    '// プロセスのハンドルを取得する。
    Dim l_PronWnd As IntPtr = Diagnostics.Process.GetCurrentProcess().Handle

    '// Token を取得する。
    Dim l_TpkenWnd As IntPtr = IntPtr.Zero
    l_blnRet = OpenProcessToken(l_PronWnd, (TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY), l_TpkenWnd)

    '// LUID を取得する。
    Dim l_udtLuid As tagLUID
    l_blnRet = LookupPrivilegeValue(vbNullString, SE_SHUTDOWN_NAME, l_udtLuid)

    '// 特権をセットする。
    Dim tp As TOKEN_PRIVILEGES = New TOKEN_PRIVILEGES()
    tp.PrivilegeCount = 1
    tp.Privileges = New LUID_AND_ATTRIBUTES()
    tp.Privileges.Luid = l_udtLuid
    tp.Privileges.Attributes = SE_PRIVILEGE_ENABLED
    l_blnRet = AdjustTokenPrivileges(l_TpkenWnd, False, tp, 0, IntPtr.Zero, IntPtr.Zero)

    '休止処理実行
    '第2引数をTRUEにすることで、強制実行
    Call SetSystemPowerState(l_blnサスペンド, True)
  End Sub
#End Region

#End Region

#Region "イベント"

#Region "イベント_定義"
  'イベント/クラス/生成時
  Public Sub New()
    'システムの電源状態変化イベントを、内部メソッドへ引き込む
    AddHandler SystemEvents.PowerModeChanged, AddressOf SystemEvents_PowerModeChanged
  End Sub
  'イベント/クラス/破棄時
  Protected Overrides Sub Finalize()
    MyBase.Finalize()
    'システムの電源状態変化イベントを、内部メソッドからはずす
    RemoveHandler SystemEvents.PowerModeChanged, AddressOf SystemEvents_PowerModeChanged
  End Sub
#End Region

#Region "イベント_WindowsProc_PowerModeChanged"
  'イベント/電源/状態変化時
  Private Sub SystemEvents_PowerModeChanged(ByVal sender As Object, ByVal e As PowerModeChangedEventArgs)
    Select Case e.Mode
      Case PowerModes.Resume
        RaiseEvent 発生処理(処理モード.再開)
      Case PowerModes.Suspend
        RaiseEvent 発生処理(処理モード.休止)
    End Select
  End Sub
#End Region

#Region "イベント_内部タイマ"
  'イベント/タイマ/タイマ
  Private Sub objタイマ_Elapsed(ByVal sender As Object, ByVal e As Timers.ElapsedEventArgs)
    Dim l_objタイマ As tmpタイマ = CType(sender, tmpタイマ)
    Dim l_休止モード As 休止モード = 休止モード.未処理

    'イベントとの関連付けを切り離す
    RemoveHandler l_objタイマ.Elapsed, AddressOf objタイマ_Elapsed
    l_objタイマ.Dispose()

    '問合せ中に、再度休止関連イベントが行われたとき対策
    Static s_bln多重問合せ回避フラグ As Boolean = False
    If s_bln多重問合せ回避フラグ Then
      Return
    End If

    s_bln多重問合せ回避フラグ = True

    '問い合わせを行う
    RaiseEvent 発生通知(l_休止モード)

    '戻り値によって処理を行う
    Select Case l_休止モード
      Case 休止モード.サスペンド
        Call 実行_サスペンド()
      Case 休止モード.休止状態
        Call 実行_休止状態()
    End Select

    s_bln多重問合せ回避フラグ = False

  End Sub
#End Region

#End Region

#Region "内部タイマー"
  Private Class tmpタイマ
    Inherits Timers.Timer
    Public Sub New()
      Me.Interval = 1
      Me.Enabled = True
    End Sub
  End Class
#End Region

End Class

>WinXPとVB.NETで休止やスタンバイのイベントを受け取るには?
WndProc (WindowsProcとも言われたりします)
を利用します。

ただ、これはシステムフックをする事になるので、ここでは
1・重い負荷を与える処理
2・ユーザからの入力を待機する処理
はご法度です!!


もしそのような処理を入れた場合、
1・システムが次の処理を走らすことができず、動作が不安定になる
2・システムが次の処理を走らすために、アプリ側で捕まえられた処理をタイムアウトとして扱い、アプリ側の変更を受け付...続きを読む

Q休止スリープどの設定がベストか

windows7のデスクトップを使っています。使っていない時に休止やスリープといった設定が
ありますが、以前スクリーンセーバーを使っていた時にcdのコピー中にスクリーンセーバーが
表示されcdのコピーがエラーになったことがあるので、怖くて使ってなかったんですが、
どれを使うのがベストでしょうか?私のpcのキーボードにはスリープボタンがありますがそれを
押すのがベターでしょうか?
又、休止やスリープを使った場合どの位電力は抑えられるのでしょうか?

Aベストアンサー

日本マイクロソフトが以前にこんな記事を出していました。
震災後まもない時期での記事であり、Windows8は入っておりません
http://technet.microsoft.com/ja-jp/windows/hh146895

Windows Vista以降のスリープは、デフォルト状態では、ハイブリッドスリープです。

スクリーンセーバーでCD-Rを焼くのを失敗するってかなり昔のことですけどね。
非常に重い3Dスクリーンセーバーなら起こるかもしれませんが。 デフォルトのものだと十分に回避出来るCPUスペックは今のPCには存在します
そもそも、液晶にスクリーンセーバーは無意味

QVB6.0で休止状態への移行を検知する方法

VB6.0で、休止状態への移行を検知する方法はありますか?
UPSが動作したときに休止状態に移行するのですが、その前に一仕事させたいと考えています。
OSはWindows2000/XPです。

Aベストアンサー

Win32 API の
SetWindowLong()、CallWindowProc() を使用すれば検出できるようです。(ただし、休止状態/サスペンドの区別はできないみたいです。)

http://www.int21.co.jp/pcdn/vb/noriolib/vbmag/9802/subc/
http://oshiete1.goo.ne.jp/qa1713868.html

が参考になると思います。


人気Q&Aランキング

おすすめ情報