2013-08-06 1 views
3

GetMonitorBrightness http://msdn.microsoft.com/en-us/library/ms775205.aspx은 어떻게 작동합니까? 누군가가 C#에서이 코드를 호출하는 실제 작업 구현을 제공 할 수 있습니까?C#에서 GetMonitorBrightness를 쿼리하는 방법

노트북에서 허용하는 밝기 레벨을 검색하려고합니다.

밝기를 1에서 ~ 150까지 설정하는 다음 작업 코드가 있습니다. 그러나 허용 된 입력 값 (최소 최대 값)을 찾고 있습니다.

LPDWORD pdwMinimumBrightness=NULL; 
LPDWORD pdwMaximumBrightness=NULL; 
HANDLE pmh = pPhysicalMonitors[0].hPhysicalMonitor; 
GetMonitorBrightness(pmh, pdwMinimumBrightness, pdwMaximumBrightness); 

이 가정되어 사용자가 제 1 모니터에 대한 값을 원하는 :

static void SetBrightness(byte targetBrightness) 
    { 
     ManagementScope scope = new ManagementScope("root\\WMI"); 
     SelectQuery query = new SelectQuery("WmiMonitorBrightnessMethods"); 
     using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query)) 
     { 
      using (ManagementObjectCollection objectCollection = searcher.Get()) 
      { 
       foreach (ManagementObject mObj in objectCollection) 
       { 
        mObj.InvokeMethod("WmiSetBrightness", 
         new Object[] { UInt32.MaxValue, targetBrightness }); 
        break; 
       } 
      } 
     } 
    } 

답변

3

Interop를 사용할 수 있어야하지만이 기능은 WMI를 통해서도 사용할 수 있습니다.

ManagementScope scope; 
SelectQuery query; 

scope = new ManagementScope("root\\WMI"); 
query = new SelectQuery("SELECT * FROM WmiMonitorBrightness"); 

using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query)) 
{ 
    using (ManagementObjectCollection objectCollection = searcher.Get()) 
    { 
     foreach (ManagementObject mObj in objectCollection) 
     { 
     Console.WriteLine(mObj.ClassPath); 
     foreach (var item in mObj.Properties) 
     { 
      Console.WriteLine(item.Name + " " +item.Value.ToString()); 
      if(item.Name =="CurrentBrightness") 
      //Do something with CurrentBrightness 
     } 
     } 
    } 
    } 

지금 나는 그들이 밝기에 영향을 미칠 수있는 방법을 구현하는 경우가 아닌 노트북 화면의 같은 '특별한'경우를 처리하는 방법을 정말 궁금 : 작업을해야 조금 다음 코드 결과 내 원래의 코드를 변경.

1

함수의 최소값과 최대 값의 출력을 갖는다.

+0

실제 작업 코드를 제공해 주시겠습니까? 실제로이 함수/WMI를 호출하는 방법을 찾을 수없는 것 같습니다. – CodingBarfield