院長のメモ帖
2013年2月1日 金曜日
Connected StandbyはSetThreadExecutionStateで阻止できない
<追記>
SetThreadExecutionStateにSystemRequiredではなくDisplayRequiredを渡すとConnected Standbyを阻止できました。詳しくはこちらで。
最近、富士通のWindows8防水タブレット、Arrows Tab Wifi QH55を購入しました。このタブレットは、Windows8パソコンとしては最軽量クラスで、しかもお風呂で使えるということで非常に重宝しています。そのうちレビューしようかなと思っていたんですが、自作のプログラムを走らせていてあることに気が付きました。それは、このPCのスリープは、SetThreadExecutionStateメソッドで阻止できないことです。
動作中はスリープしないプログラムを自作していたのですが、Arrows Tabでは、スリープしてしまいます。そこで、Microsoft.Win32.SystemEvents.PowerModeChangedイベントをフックして、電源モードの変化を記録してたうえでスリープボタンを押してみると、他のPCではスリープレジュームイベントが記録されるのに、Arrows Tabでは、このイベントが発生していませんでした。
このPCはWindows8で新しく実装されたConnected Standbyに対応していて、いままでのS3, S4ではなくS0i1、S0i3という待機状態になります。この状態ではOSは動いていてるままだそうです。推測ですが、この状態への移行は今までのスリープとは内部的な動作が全く違うので、ExecutionStateは参照されないと思われます。
Connected Standbyを阻止するには、今まで違うコードが必要なようで、いろいろ調べてみるしかなさそうですね。
投稿者
カテゴリ一覧
- かんなのワンニャン日記 (30)
- フォトギャラリー (13)
- 院長のメモ帖 (69)
最近のブログ記事
月別アーカイブ
- 2020年4月 (1)
- 2018年7月 (1)
- 2018年4月 (1)
- 2017年6月 (3)
- 2017年5月 (2)
- 2017年2月 (1)
- 2016年8月 (1)
- 2016年7月 (1)
- 2016年6月 (2)
- 2016年5月 (2)
- 2016年2月 (1)
- 2016年1月 (1)
- 2015年11月 (1)
- 2015年10月 (3)
- 2015年7月 (1)
- 2015年6月 (1)
- 2015年5月 (1)
- 2015年4月 (1)
- 2015年1月 (1)
- 2014年12月 (2)
- 2014年10月 (1)
- 2014年6月 (1)
- 2014年4月 (2)
- 2014年3月 (2)
- 2014年1月 (1)
- 2013年12月 (1)
- 2013年11月 (2)
- 2013年10月 (2)
- 2013年9月 (1)
- 2013年8月 (3)
- 2013年7月 (2)
- 2013年6月 (3)
- 2013年4月 (1)
- 2013年2月 (2)
- 2013年1月 (1)
- 2012年11月 (1)
- 2012年10月 (2)
- 2012年9月 (3)
- 2012年8月 (3)
- 2012年6月 (1)
- 2012年5月 (1)
- 2012年4月 (3)
- 2012年3月 (2)





