以前の記事でTWAPIパッケージのget_process_memory_infoメソッドを使う方法を紹介しましたが、そこに行きつくまでにWMIを使う方法も調べていたので、ついでに紹介しておきます。
WMIでメモリ使用量を調べる方法
「WMI PrivateBytes」でググっていて、以下のサイトを見つけました。
こちらのサイトにC#のサンプルコードがあるのですが、何やらSQL文のような文字列を使って問い合わせているようでした。
TWAPIでWMI問い合わせを行う記述例でも同じようにSQL文のような文字列で問い合わせていたので、これらを合わせて
package require twapi
set wmi [::twapi::wmi_root]
set query "SELECT * FROM Win32_PerfRawData_PerfProc_Process Where IDProcess=\"[pid]\""
$wmi -with {
{ExecQuery $query}
} -iterate app {
puts "PrivateBytes=[$app PrivateBytes]"
$app -destroy
}
のように実行してみると、以下のような結果になりました。
PrivateBytes=17342464
余談ですが、上記のスクリプトの中でwmiやappはTclOOオブジェクトなのですが、実用的にTclOOが使われているのを初めて見てとても新鮮でした。