WMI で BatteryStatusChange イベントをキャッチしようとしています。プログラムを実行すると、バッテリの充電または放電が開始されたときに、バッテリ イベントがまったく発生しません。
これは私が試している私のコードです:
namespace BatteryStatusChange
{
class Program
{
static void Main(string[] args)
{
try
{
WqlEventQuery query = new WqlEventQuery(
"SELECT * FROM BatteryStatusChange");
ManagementScope Scope = new ManagementScope(String.Format("\\\\{0}\\root\\WMI", "localhost"), null);
Scope.Connect();
ManagementEventWatcher watcher = new ManagementEventWatcher(Scope, query);
Console.WriteLine("Waiting for an event...");
ManagementBaseObject eventObj = watcher.WaitForNextEvent();
Console.WriteLine("{0} event occurred.", eventObj["__CLASS"]);
// Cancel the event subscription
watcher.Stop();
return;
}
catch (ManagementException err)
{
MessageBox.Show("An error occurred while trying to receive an event: " + err.Message);
}
}
}
}
このプログラムを実行すると、バッテリの充電または放電が開始されたときに、バッテリ イベントがまったく発生しません。
以下のようなわずかに異なるクエリ文字列も試しましたが、役に立ちませんでした。
SELECT * FROM BatteryStatusChange WHERE PowerOnline = TRUE
どんな助けでも大歓迎です。