モニタの省電力設定を一時無効にするには

解決


あざみ  2004-09-27 06:46:14  No: 85761

Windows Media Playerのコントロールを使って簡単な動画再生ソフトを作成していますが
再生をさせていると、モニタの電源設定のためモニタ出力がオフになってしまいます。
そこでプログラムよりモニタの電源設定で「モニターの電源を切る」を機能を一時的に止めたいと
考え、調べたところSystemParametersInfoで管理できることが分かったので下記の様に
プログラムしてみましたが、やはり電源管理を止めることができません。
他に何かする必要があるのでしょうか?
開発環境はWinXP SP2,VB6 SP6です。
よろしくお願いします。

’宣言部分
' システムに関するパラメータを示す定数の宣言
Public Const SPI_SETLOWPOWERACTIVE = 85
' ユーザープロファイルの更新を指定する定数の宣言
Public Const SPIF_UPDATEINIFILE = &H1
' すべてのトップレベルウィンドウに変更を通知する定数の宣言
Public Const SPIF_SENDWININICHANGE = &H2
Public Const SPIF_SENDCHANGE = SPIF_SENDWININICHANGE
' システムワイドパラメータを問い合わせや設定する関数の宣言
Declare Function SystemParametersInfo Lib "user32.dll" Alias "SystemParametersInfoA" (ByVal uiAction As Long, ByVal uiParam As Long, pvParam As Any, ByVal fWinIni As Long) As Long

’モニタ電源管理関数
Public Function MonitorPower(lngFlag As Long) As Long

  ' モニタの省電力機能の有効無効を設定
  MonitorPower = SystemParametersInfo(SPI_SETLOWPOWERACTIVE, lngFlag, ByVal CLng(0), SPIF_UPDATEINIFILE Or SPIF_SENDCHANGE)
  
End Function

再生前に
  MonitorPower 0  
を呼び出しています。


くりちゃん  URL  2004-09-27 20:35:50  No: 85762

「モニターの電源を切る」を機能を一時的に止めたいのであれば、

  SPI_SETPOWEROFFACTIVE

を試してみてはいかがでしょうか。


あざみ  2004-09-28 05:59:45  No: 85763

回答ありがとうございます。
早速下記のように修正して試してみたのですが、やはり結果は同じでした。
SystemParametersInfoの戻り値も1が返ってきているので関数自体は成功して
いそうなんですが、1分たつと(コントロールパネルでそう設定したので)
ビデオ出力がオフになってしまいます。

’宣言部分
' システムに関するパラメータを示す定数の宣言
Public Const SPI_SETPOWEROFFACTIVE As Long = 86
' ユーザープロファイルの更新を指定する定数の宣言
Public Const SPIF_UPDATEINIFILE As Long = &H1
' すべてのトップレベルウィンドウに変更を通知する定数の宣言
Public Const SPIF_SENDWININICHANGE As Long = &H2
Public Const SPIF_SENDCHANGE As Long = SPIF_SENDWININICHANGE
' システムワイドパラメータを問い合わせや設定する関数の宣言
Declare Function SystemParametersInfo Lib "user32.dll" Alias "SystemParametersInfoA" (ByVal uiAction As Long, ByVal uiParam As Long, pvParam As Any, ByVal fWinIni As Long) As Long

’モニタ電源管理関数
Public Function MonitorPower(lngFlag As Long) As Long

  ' モニタの省電力機能の有効無効を設定
  MonitorPower = SystemParametersInfo(SPI_SETPOWEROFFACTIVE, lngFlag, ByVal CLng(0), SPIF_UPDATEINIFILE Or SPIF_SENDCHANGE)
  
End Function

再生前に
  MonitorPower 0  
を呼び出しています。

Microsoftの解説では32ビットアプリケーションで機能しますと書かれていますが
別の個人サイトでは32ビットアプリケーションでは機能しないようなことが
書かれています。


くりちゃん  2004-09-29 07:55:19  No: 85764

SPI_SETLOWPOWERACTIVE, SPI_SETPOWEROFFACTIVE それぞれを無効にしてもダメですか?


あざみ  2004-09-30 01:41:49  No: 85765

ご指摘のとおりモニタの電源管理関数のところで
SPI_SETLOWPOWERACTIVE
SPI_SETPOWEROFFACTIVE
の両方を設定することにより、コントロールパネルの「モニタの電源を切る」
の設定を無効にすることができました。

両方とも呼び出すのは試していませんでした。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加