以前から気になっていたのですが ... 。
OS の 仕組みって、とても、複雑です。
例えば、 便利な ノート PC の バッテリ 絡みの 管理情報。
powercfg /batteryreport で提供されている情報ですが ... 。
私も、ノート PC 使ってます。 かなり、古くなっていますが ... 。 ;)
使い込むと頭痛の種になるのが ... バッテリ!。
バッテリは なまもの!。
最初は イキイキしていますが、
月日と共に劣化が進行し、
騙し騙しの日々がやって来ます。
そして、はい、 そろそろ、寿命か ... 。
そんな時の 駄目押し ... 、引導を渡すのが、先に書いた ...
powercfg /batteryreport 。
こりゃぁ~、もう、危ない! と分かる数値の羅列とご対面!。 X(
イントロはそろそろ切り上げて ... 。
powercfg は便利ですが、
.html や .xml で出力されるものは詳細で有効かつ強力ですが、
ちょっと、作業が何ステップか必要な為、
作業が億劫なのですね。
では、自分で書くか と思えば、直ぐに挫折 ... 。
思った程の詳細情報が得られません。
そこで、Internet を漁り捲って、 他人さまのお書きになったツールを導入しました。
はい。 Yuryu's Battery Information YbInfo です。
Home Page を検索しましたが、不明 ... 。
Yuryu さま! ありがとう!。
尚、
CPUID の HWMonitor でも、主要な数値は取得出来ます。
https://www.cpuid.com/softwares/hwmonitor.html CLASSIC VERSIONS から Free Edition を。.
こちらも、 ありがとう!。
さて、本題に戻りましょう。
そうです。
これ バッテリ絡み は、複雑なカラクリに囲まれています。
こんな事が絡むのです。
言い方は変ですが、実は、 powercfg は単純に動いる訳では無くて、
様々な API 等から結果を参照していて、それらは ネイティブコードらしい と言う事。
どうやら、energy.dll がそれらを束ねている模様 ... 。
フロントエンド的な役目なので、
個々のデータ参照は、そんなに楽ではなさそう ... と思っています。
実際に、WMI から取得すれば、完全では無い形でしか得られませんから。
powercfg から、出て来る Output を加工するのも、後戻りっぽいので、スッキリしませんし。
結局、powercfg が内部でしているのと同様に、API を叩かなければ、各項目は得られない筈です。
参考: https://tutorialmore.com/questions-158294.htm
簡単に済まそうと思い、 powercfg /batteryreport を念頭に、
VB or C# で Project を組めば、
cmd.exe を Process として呼ぶ事になりますが、
x64 OS の場合、cmd.exe はふたつあります。
\SysWOW64\cmd.exe と \System32\cmd.exe と。
AnyCPU Prefer32 (x86 32-Process) は前者、 AnyCPU Not Prefer32 or x64 は後者。です。
各々の Command Prompt からは set PROCESSOR_ARCHITECTURE で確認出来ます。
x64 は AMD64 が、 x86 は x86 が返ります。
この辺りが絡んで、 ネイティブであろう energy.dll がコケるケース にも注意が必要でしょう。
msdn で以下の様に書き込みをしました。
energy.dll で検索すると、OS CPU アーキテクチャに依存する様ですので、
OS が x64 の場合、Project が 32 優先になっていると、エラーを吐く気がします。
AnyCPU 優先なし または x64 にして Build したら改善されますか?。
いやぁ、 バッテリ絡み は難しい ... 。
0 件のコメント:
コメントを投稿