2011-04-19 8 views
2

WMI 없이도 배터리 DesignCapacity 및 FullChargeCapacity를 얻을 수있는 방법이 있습니까? 이 값은 WMI에서 지원되지 않으므로 다른 값으로 설정해야합니다.WMI없이 배터리 정보 얻기

아니면 누군가가 C#의 배터리 마모 수준을 얻는 것이 더 쉽습니다 (더 쉬운) 아이디어가 있습니까?

은 BTW 나는이 방법을 사용하려고하지만, 단지

ManagementObjectSearcher query = 
     new ManagementObjectSearcher("SELECT DesignCapacity FROM Win32_Battery"); 

foreach (ManagementObject queryObj in query.Get()) 
{ 
    string dc = Convert.ToString(queryObj.GetPropertyValue("DesignCapacity")); 
    label1.Text = dc + " mAh"; 
} 

감사

+1

다운로드 WMI Explorer에서 찾을 수 있습니다 http://www.ks-soft.net/hostmon.eng/wmi /index.htm –

+0

WMI의 요점은 BIOS와 직접 대화 할 필요가 없다는 것입니다. 네가하는 일 *하고 싶지 않은 일. 구현되지 않은 WMI 속성 및 메서드가 흔히있는 것은 흔한 일이 아니므로 컴퓨터 제조업체에서 업데이트 된 WMI 공급자를 얻어야합니다. 가능하다면 일반적으로 그렇지 않습니다. –

+0

그래서이 데이터를 얻을 수있는 다른 방법이 없습니까? WMI가이 속성을 지원하지 않고 컴퓨터 제조업체가 WMI 업데이트를 제공하지 않으면 이러한 데이터를 얻는 다른 방법은 무엇입니까? – spychu

답변

1

를 null을 반환 대신 win32_battery의 다른 클래스에 대해 별도의 쿼리를 수행해야하는 특정 값을 얻을 수 있습니다.

DesignCapacity이 BatteryStaticData

FullChargeCacity에서 조회 할 수는

당신은 쿼리 또한 코드에서 다른 범위를 사용해야합니다 BatteryFullChargedCapacity

에서 조회 할 수 있습니다. 이러한 클래스는 당신이 정보를 사용할 알 수 있도록 WMI 쿼리를 실행하고 테스트 할 root/WMI 대신 root/cimv2

string scope = "root/WMI"; 
string query = "SELECT DesignedCapacity FROM BatteryStaticData"; 

ManagementObjectSearcher batteriesQuery = new ManagementObjectSearcher(scope, query); 

ManagementObjectCollection batteries = batteriesQuery.Get(); 

foreach (ManagementObject battery in batteries) 
{ 
    if (battery != null) 
    { 
     foreach (var property in battery.Properties) 
     { 
      Console.Log("Property name: " + property.Name + " Property value: " + property.Value); 
     } 
    } 
}