문제

Sony Laptop에 Windows Server 2008이 설치되어 있으며 밝기 컨트롤이 작동하지 않습니다. 변경할 수있는 프로그램을 작성하고 싶습니다.

현재 제가해야 할 일은 전원 제어 패널을 열고 고급 설정을 클릭하고 많은 UAC 상자를 통해 싸우는 것입니다.

나는 단지 간단한 작은 프로그램을 원하지만 어떤 API가 전화 해야할지 모르겠다

도움이 되었습니까?

해결책

나는 올려다 존 루디의 링크 wmisetbrightness MSDN에서 다음을 생각해 냈습니다.

ManagementClass mclass = new ManagementClass("WmiMonitorBrightnessMethods");
mclass.Scope = new ManagementScope(@"\\.\root\wmi");
ManagementObjectCollection instances = mclass.GetInstances();

// I assume you get one instance per monitor
foreach(ManagementObject instance in instances)
{
    ulong timeout = 1; // in seconds
    ushort brightness = 50; // in percent
    object[] args = new object[] { timeout, brightness };
    instance.InvokeMethod("WmiSetBrightness", args);
}

메모: ManagementClass, ManagementObjectCollection, 그리고 ManagementObject 모든 구현 IDisposable. 당신은 전화해야합니다 Dispose() 또는 사용 "using"자원이 새는 것을 피하기 위해.

다른 팁

이것은 Vista 전용입니다.

http://msdn.microsoft.com/en-us/library/ms775232.aspx

SetMonitorBrightness로 밝기를 설정하기 전에 GetPhysicalMonitorsfromhmonitor로 모니터를 식별해야합니다. .NET에서 전에 아무도 해보지 않았다고 생각하므로 자신의 인터 로프를 작성해야 할 것입니다. API는 특히 어려운 것처럼 보이지 않으므로 쉽게 할 수 있어야합니다.

내가 아는 한, 이에 대한 관리 된 (.NET) API는 없습니다. 그러나 Vista의 경우 Interop을 통해 관리되지 않는 API가 있습니다. MSDN 참조 : 구성 API를 모니터링합니다 그리고 wmisetbrightness.

WMISETBRIGHT 방법을 치는 방법이있을 수 있지만, 나는 그것들을 알지 못합니다.

Vista 또는 Server 2008에 있지 않은 경우 불쾌한 세계를 찾으십시오. 소프트웨어 구성은 모니터 드라이버를 통해 직접 수행해야합니다. 위의 UAC에 대한 언급을 바탕으로, 나는 이것이 당신에게는 그렇지 않다고 생각하지만, 다음 사람은 알고 싶어 할 것입니다. :)

여기에 브레인 스터머 일뿐입니다 ... 랩톱에서는 키보드의 일부 키보드를 사용하여 밝기를 변경할 수 있습니다. 더 어둡거나 라이터로 만들고 특정 값으로 설정하지 않아도되면 해당 키 프레스를 보낼 수 있어야합니다.

Daeagles 대답에 추가하기 위해 http://www.pinvoke.net/ .NET에서 Win32-Apis로 작업 할 때 사이트는 생명의 절약이 될 수 있습니다. 정보가 존재하지 않으면 .NET에 대한 성공적인 인터 로프를 만들 때 추가하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top