実験結果。
アプリを立ち上げて1人用ライフカウンター画面にし、そのまま1時間ほど放置してみました。
仕事中のデスクの上で、スクリーンに浮かび上がるボーラスさんの雄姿。席の後ろを通る人の視線がチラチラと痛くて10分ほどたったところで裏返しにしちゃいましたが……。
結果、大雑把にですが開始前は90%のバッテリー残量でしたが、1時間で60%ほどに減っていました。大体3時間ほど使い続けるとバッテリーが切れる計算ですね。ちょっとした対戦程度なら十分使用に耐え得るとは思いますが、やはり減りの早さがきびしいです。スクリーンがずっと移りっぱなしなので綺麗といえば綺麗なんですけどね……。
ちなみにその後、「自動サスペンドさせない」の設定をOFFにし、WM側の自動サスペンド設定もOFFにして同じく1時間放置してみました。(一定時間で画面は真っ暗になりますが、電源ボタンを押さずとも画面タップですぐ元に戻る状態)この場合だと1時間たっても50%⇒50%と、かなりバッテリー消費量を抑えられるみたいです。
まぁ本当の理想は、WMのシステム設定通りに一定時間後にバックライトが最小にはなるが、真っ暗にはならずキープしつづけること、なんですけどね……。
やはりSystemIdleTimerReset関数を使うのがよさそうなんですが、何故うまくいかないんでしょう……うーん。せめて関数が、実行結果をTrueかFalseなり0か1なり戻してくれれば助かったんですけどね……。
-------------------------------
ちなみに宣言と呼び出しは以下。
< DllImport ("coredll.dll") > _
Private Shared Sub SystemIdleTimerReset()
End Sub
~
Private Sub tmSuspendCanceler_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmSuspendCanceler.Tick
SystemIdleTimerReset()
'現在は↓で代用中
'keybd_event(System.Windows.Forms.Keys.MButton, 0, 0, 0)
End Sub
多分これであってると思うんですが、むぅ……。
OD-10ZさんはVB使いだったんですね
返信削除VBなら Declare で宣言してみてはどうでしょうか。
はい、VB使いなんです。(業務では数ヶ月やった程度ですが)
返信削除>>Declare
も試してみたんですが、やはり駄目ですねぇ。エミュだとDllimportにしろDeclareにしろ、うまく動作するんですけど……。
もうちょっと色々試してみますね。情報提供ありがとうございましたー。