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
を呼び出しています。
「モニターの電源を切る」を機能を一時的に止めたいのであれば、
SPI_SETPOWEROFFACTIVE
を試してみてはいかがでしょうか。
回答ありがとうございます。
早速下記のように修正して試してみたのですが、やはり結果は同じでした。
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ビットアプリケーションでは機能しないようなことが
書かれています。
SPI_SETLOWPOWERACTIVE, SPI_SETPOWEROFFACTIVE それぞれを無効にしてもダメですか?
ご指摘のとおりモニタの電源管理関数のところで
SPI_SETLOWPOWERACTIVE
SPI_SETPOWEROFFACTIVE
の両方を設定することにより、コントロールパネルの「モニタの電源を切る」
の設定を無効にすることができました。
両方とも呼び出すのは試していませんでした。
ありがとうございました。
ツイート | ![]() |