JACOB を使用して、WMI 経由でシステム情報にアクセスしています。Web 上で WMI と Jacob に関するドキュメントをあまり見つけられなかったので、コードをもう少し効率的にするための助けが得られるかどうか疑問に思っていました。
コードは次のとおりです。
ActiveXComponent mActiveXWMI = new ActiveXComponent("winmgmts:\\\\localhost\\root\\CIMV2");
String query = "SELECT * FROM Win32_PerfFormattedData_PerfOS_Processor WHERE Name='_Total'";
Variant vCollection = mActiveXWMI.invoke("ExecQuery", new Variant(query));
EnumVariant enumVariant = new EnumVariant(vCollection.toDispatch());
Dispatch item = null;
while (enumVariant.hasMoreElements()) {
item = enumVariant.nextElement().toDispatch();
cpuUsage = Double.parseDouble(Dispatch.call(item, "PercentProcessorTime").toString());
}
おわかりのように、1 つの項目だけを取得するためにコレクションをループしてもあまり意味がないようです。クエリ ステートメントで 1 つの列に対してクエリを実行し、その結果をできるだけ迅速かつ効率的に取得し、オーバーヘッドをできるだけ少なくしたいと考えています。
JACOB の経験が豊富で、これらの値を可能な限り最良の方法で取得している人はいますか?
ありがとう、
スティーブ