2014-03-04 3 views
1

Windows 8 응용 프로그램을 개발 중입니다. 기기의 밝기 설정에 액세스 할 수있는 방법이있어 사용자가 앱 내부에서 기기의 밝기를 조정할 수 있습니까? 감사합니다Windows 8 응용 프로그램에서 화면 밝기 조정

+0

스택 오버플로에 오신 것을 환영합니다. 지금까지 해봤습니까? [FAQ], [ask] 및 [help]를 시작으로 읽으십시오 .. –

답변

0

(가) 즉석에서 밝기를 변경할 수 있습니다 윈도우 유틸리티 PowerCfg 내장 ... 일반적으로 PowerCfg는 cmd를 줄이나 배치 파일에서 호출되어

,하지만 당신은 또한 Process.Start를 사용하여 응용 프로그램에서 호출 할 수 있습니다. POWERCFG를 사용하는 경우

당신은 몇 가지를 알아야합니다 :

  1. 구성표 GUID : 변경하려는 전원 구성표와 관련된 GUID입니다.
  2. 하위 가이드 : 변경하려는 전원 설정 그룹과 연결된 GUID는 어느 것입니까?
  3. 설정 가이드 : 변경하려는 전원 설정 그룹의 실제 설정과 연결된 GUID는 어느 것입니까?
  4. 범위 또는 인덱스 값 : 마지막으로 해당 값을 변경할 값을 알아야합니다. 일부 설정에는 해당 범위 내에서 설정할 수있는 범위가 있으며, 일부 설정에는 목록이 있습니다 선택할 가치가 있고 원하는 값의 색인을 알아야합니다.

사용자가 새로운 체계를 정의 할 수 있으며, 따라서 GUID를 PowerCfg -getactivescheme

다른 GUID를 호출하여 발견 될 필요가 있기 때문에 GUID를 실제로 얻을 수있는 어려운 일이다 계획은 모든 상수와 수 있습니다 PowerCfg - query

일단 모든 guid가 정렬되면 각 설정에 대해 ac (전원이 연결됨) 및 dc (배터리에서) 값을 설정할 수 있습니다. 로 : 예를 들어

POWERCFG -SETACVALUEINDEX <SCHEME_GUID> <SUB_GUID> <SETTING_GUID> <SettingIndex> 
and 
POWERCFG -SETDCVALUEINDEX <SCHEME_GUID> <SUB_GUID> <SETTING_GUID> <SettingIndex> 

... 여기에 내가 적응 밝기 기능을 해제하는 데 사용하는 작은 배치 파일입니다 :

Echo Disable Adaptive Display Brightness Setting 

for /f "tokens=2 delims=:" %%G in ('powercfg -getactivescheme') do set guid=%%G 

for /f %%G in ("%guid%") do set guid=%%G 

powercfg -setacvalueindex %guid% 7516b95f-f776-4464-8c53-06167f40cc99 fbd9aa66-9553-4097-ba44-ed6e9d65eab8 000 
powercfg -setdcvalueindex %guid% 7516b95f-f776-4464-8c53-06167f40cc99 fbd9aa66-9553-4097-ba44-ed6e9d65eab8 000 

라인의 첫 번째 부부 구성표 GUID를 받고는, 그 다음 두 사람은 실제 값

을 설정하는 당신이 하위 그룹 GUID를 설정 (적응 형 밝기와 같은 하위 그룹)는 디스플레이 밝기 설정에 대한 매우 비슷한 ... 할 수

:

Subgroup GUID: 7516b95f-f776-4464-8c53-06167f40cc99 (Display) 
    Power Setting GUID: aded5e82-b909-4619-9949-f5d71dac0bcb (Display brightness) 
    Minimum Possible Setting: 0x00000000 
    Maximum Possible Setting: 0x00000064 
    Possible Settings increment: 0x00000001 
    Possible Settings units: % 

는 즉석에서 cmd를 파일을 구축하는 데 도움이 Process.Start

희망을 실행할 수 있습니다 당신의 C# 응용 프로그램에서 호출하세요!

+0

Thanks. [setbrightness 12] 또는 무엇이든 할 수 있도록 스크립트의 배치 명령을 기반으로 [스크립트 작성] (https://gist.github.com/jay/2c4ca23314f1ed31c24da390d86c2b23). 내 랩톱은 밝기 단축키를 사용하여 10 씩 증가하지만, 황혼 레벨 10은 너무 어둡고 레벨 20은 너무 밝아서 스크립트를 사용하여 두 값 사이에 허용되는 수준을 설정할 수 있습니다. – Jay

1

배치 파일을 사용하여 일을 변경했지만 Windows에서 C# (잘 p/호출 및 호출)에서 직접 API를 제공 한 것처럼 보입니다.그래서 위의 모든 여전히 사실이고 계속 작동하지만 또한 모든 하위 GUID를 나열했기 때문에

PowerGetActiveScheme

PowerWriteACValueIndex

PowerWriteDCValueIndex

그 링크가 너무 좋네요 호출 할 수 있습니다 너를 위해서. P/위의 나쁜 소년을 호출하고 앱에서 직접 호출합니다. 배치 파일은 필요하지 않습니다. :)

+0

이것은 정답이지만 현재 활성 전력 구성표 (https://github.com/HubKing/LinkBrightness/blob/e8168f1e995622a3aa67797f6a97ca316c6ff7ed/LinkBrightness/Program.cs#L536-L543)를 현재 상태로 설정해야한다는 사실을 발견했습니다. 전원 구성표를 사용하여 현재 전원 구성표의 값을 설정 한 후 Windows가 해당 전원 구성표를 올바르게 업데이트하도록합니다. 그렇지 않으면 정의되지 않은 동작이 발생할 수 있습니다. 자세한 내용은 [관련 PR] (https://github.com/HubKing/LinkBrightness/pull/1)의 참고 사항을 참조하십시오. – Jay

관련 문제