설치 / 사용기

기 타 PureBasic - AppsUseLightTheme 레지값 읽기 관련입니다

2024.04.17 11:02

왕초보 조회:825 추천:13

어두운 테마를 사용하시는 분을 AppsUseLightTheme가 어떤것인지 다 알고 계실것 입니다

밝은 테마, 어두운 테마 레지 항목입니다

 

딸랑쇠님 작품에 사용되는 QndPESet.exe에서 테마 설정관련해서 에러가 발생을 해서 사용기를 쓴적이 있습니다

중국 PE를 한글화한 작품에서 발생을 하였습니다..이 PE에는 레지에 AppsUseLightTheme 항목자체가 없습니다 이 레지가 없는 경우 밝은

테마가 적용이 됩니다

저의 경우  Win7 x64를 사용하고 있어서 AppsUseLightTheme가 없습니다..크롬에서 어두운 테마를 적용하기 위해서는 AppsUseLightTheme

값을 추가를 해주면 됩니다

이렇게 AppsUseLightTheme 값이 없는 경우 현재 밝은 테마인지 어두운 테마인지 구분을 하기 위해서 레지값을 읽어 올때 문제가 될수 있습

니다

 

사용기를 보시면 어떤 부분인지 이해가 되실것 같습니다

중국 PE에서처럼 AppsUseLightTheme 레지 항목 자체가 없는 경우에 생기는 현상이어서 특수한 경우이지만..이런 경우도 있을수 있기 때문

에 레지값으로 현재 테마를 구분을 할때에 참고하여 주십시요

 

 

1. 아래는 SwitchTheme.cmd 내용입니다

   AppsUseLightTheme 레지값을 읽어오고 있습니다..레지 항목이 있는 경우에는 정상 작동을 합니다

 

@Echo Off

For /f "tokens=2*" %%a in ('Reg Query HKCU\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize /v AppsUseLightTheme') Do Set "Theme=%%b"

If %Theme%==0x1

  Echo Switch to Explorer Dark Theme...

  Echo.

  Reg Add HKCU\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize /v AppsUseLightTheme /t REG_DWORD /d 0 /f

) Else ( 

  Echo Switch to Explorer Light Theme...

  Echo.

  Reg Add HKCU\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize /v AppsUseLightTheme /t REG_DWORD /d 1 /f

)

exit

 

2. AppsUseLightTheme 항목이 없는 경우 밝은 테마가 적용이됩니다 하지만 아래처럼 cmd에서는 AppsUseLightTheme가 없어서 에러가

  발생을 해서 어두운 테마 레지가 등록이 되지 않습니다..

0.jpg

 

3. 아래 부분은 입니다님 작품에 있는 레지값을 읽어 오는 함수 입니다

   KeyValue 값이 0 을 반환하는 항목이 있습니다..솔직히 어떤게 작동하는지는 알지 못합니다.

 

Procedure.l ReadRegDWORD(OpenKey.l, SubKey.s, ValueName.s, RegType.i = #REG_DWORD)

     Protected hKey.l = 0, KeyValue.l=0, Datasize.l = SizeOf(QUAD)

     If RegOpenKeyEx_(OpenKey, SubKey, 0, #KEY_READ, @hKey)

            KeyValue = 0

     Else

            If RegQueryValueEx_(hKey, ValueName, 0, @RegType, @KeyValue, @Datasize)

                    KeyValue = 0

            ;Else

            ; KeyValue = Left(KeyValue, Datasize - 1)

            EndIf

            RegCloseKey_(hKey)

     EndIf

     ProcedureReturn KeyValue

EndProcedure

 

4. PE로 부팅을 하였습니다..현재 AppsUseLightTheme 항목이 있습니다..대부분의 PE는 이 항목이 있을것입니다

  다이어트가 된 중국 PE에서 없는것이 특수한 경우일것입니다..저야 win7 x64여서 당연히 없기는 합니다

   레지값이 1 인 경우 밝은 테마 입니다

3.jpg

 

5. ReadRegDWORD 로 레지값을 읽어 왔습니다..1 값을 정확히 읽어 오고 있습니다

4.jpg

 

6. AppsUseLightTheme 값이 0 인경우 어두운 테마입니다. 레지값을 정확이 읽어 왔습니다 

5.jpg

 

7. 다이어트된 중국 Pe에서 처럼 AppsUseLightTheme 항목을 삭제를 하여 보았습니다

   AppsUseLightTheme  항목이 없는 경우 ReadRegDWORD 로 레지값을 읽어면 항목이 없는 경우에도 0 값을 반환을 합니다

   값이 0 이면 어두운 테마로 체크가 됩니다..레지에서 항목이 없는 경우에는 실제 밝은테마가 적용이 됩니다..여기에서 차이가 생깁니다

6.jpg

 

8. ReadRegDWORD에서 아레 부분 리턴값을 -1로 하였습니다..오토잇에서는 레지값이 없는 경우 Null값을 반환하는것 같습니다

   딸랑쇠님 작품중에 중국 PE를 한글화한것이 있어서 QndPESet.exe에서는 0 1 Null 3가지 경우를 체크를 하고 있습니다

   아래처럼 -1 값으로 수정하면 AppsUseLightTheme 항목이 없을때 -1 값을 반환합니다.. 이것이 맞는것인지는 잘 모르겠습니다만..

   결과가 -1이 반환이 되어서 밝은 테마로 체크를 하였습니다

 

Procedure.l ReadRegDWORD(OpenKey.l, SubKey.s, ValueName.s, RegType.i = #REG_DWORD)

     Protected hKey.l = 0, KeyValue.l=0, Datasize.l = SizeOf(QUAD)

     If RegOpenKeyEx_(OpenKey, SubKey, 0, #KEY_READ, @hKey)

            KeyValue = 0

     Else

            If RegQueryValueEx_(hKey, ValueName, 0, @RegType, @KeyValue, @Datasize)

                    KeyValue = -1

            ;Else

            ; KeyValue = Left(KeyValue, Datasize - 1)

            EndIf

            RegCloseKey_(hKey)

     EndIf

     ProcedureReturn KeyValue

EndProcedure

 

9. AppsUseLightTheme 항목이 없는 경우 -1로 항목이 없다는것을 체크할수 있습니다.. 밝은 테마로 확인을 할수 있습니다

7.jpg

 

10. 마무리

테마를 설정하는 프로그램들을 만들어 활용을 하시는 경우가 있을수 있습니다.

윈도우에서는 잘 모르겠습니다만..다이어트된 중국 PE에서는 AppsUseLightTheme 레지 항목이 없는 경우가 있을수 있습니다

이런 경우 다른 PE에서 잘되는데 이 PE에서만 오동작을 할수가 있습니다.. 이럴때에는 AppsUseLightTheme 항목이 있는지 한번 확인을 해

보시는것도 좋을것 같습니다

 

고수님들께서 중국의 좋은 PE를 한글화 해주시는 경우가 있습니다  이런경우 AppsUseLightTheme가 없을수 있습니다

테마설정 프로그램을 만들어 활용을 하시는 경우 이런 경우도 고려를 해주시면 AppsUseLightTheme가 없는 경우에도 잘 적용이 될수 있습

니다.. 참고만 하여 주십시요

 

화창한 날입니다

즐거운 하루가 되시길 바랍니다

 

번호 제목 글쓴이 조회 추천 등록일
[공지] 사용기/설치기 이용안내 gooddew - - -
11295 기 타| DiskPart_EWS 수정본 [Only_UEFI_수정본 추가] [29] DengJang 951 70 08-21
11294 기 타| 0826 - 제한헤제 수정 : 개발자 메모 도우미 북.zip - 테... [11] 빨강모자 490 28 08-21
11293 윈 도 우| sunshine님 DiskPartitionCOMFix2 멀티메뉴구성 이지윈셋... [9] 수리수리 800 17 08-21
11292 기 타| AOMEI OneKey Recovery 핫키 사용기 입니다 [13] 왕초보 1036 30 08-20
11291 하드웨어| 삼성 엣지 스냅드래곤 설치 경험 [14] GreenTea 957 10 08-20
11290 기 타| WinClon 핫키 + Winre.wim 으로 구성을 하여 보았습니다.. [13] 왕초보 912 27 08-20
11289 기 타| DiskPart_EWS 사용기 [57] DengJang 1021 99 08-19
11288 기 타| winXPE147수정버전_Win10_22H2 2209(빌드19045.4780)정리 [60] 격자 830 114 08-19
11287 기 타| 펌웨어에 Winre.wim 부팅 메뉴가 추가가 되네요 [8] 왕초보 918 19 08-19
11286 기 타| 【배포】 281mb DVD PE - Win11 Light 최종판 소개 [39] 딸랑쇠 1614 101 08-19
11285 기 타| [실행샷] 메모장들을 데이터 베이스처럼 관리하기 -2 [14] 빨강모자 626 38 08-18
11284 기 타| 펌웨어에서 Winre.wim으로 바로 부팅하기 입니다 (Uefi) [10] 왕초보 941 24 08-18
11283 기 타| IFW BR + Winre.wim 복구시스템을 구성을 하여 보았습니다 [15] 왕초보 902 37 08-18
11282 기 타| winXPE147수정버전_20240322_23H2(빌드 22635.4010) 정리 [84] 격자 713 153 08-17
11281 소프트웨어| DiskPartition 제3편 [48] sunshine 2092 126 08-17
11280 기 타| winXPE147수정버전_20240322_23H2(빌드 22631.4037) 정리 [90] 격자 652 164 08-16
11279 기 타| REAgentC 으로 Winre.wim 1회 부팅하기 입니다 [12] 왕초보 870 21 08-16
11278 기 타| Winre.wim 수동 등록 및 F8 사용기 입니다 [9] 왕초보 945 23 08-16
11277 소프트웨어| 배치파일 메뉴 형태들 (hybrid batch file) [16] 지후빠 822 43 08-15
11276 소프트웨어| Bcdboot-batch-and-GetPart-new [19] 지후빠 1086 60 08-14
XE1.11.6 Layout1.4.8