소프트웨어 XML 잘 아시분는 계신지요... DC2 관련
2023.03.08 16:50
화면 해상도 조정 프로그램들 살펴보다가
12noon.com 의 DC2.exe 를 사용 해보려하니
dc2.exe -create="MYScreenMode.xml" 라는 옵션을 주어
모니터 기본 설정을 저장하고
dc2.exe -configure="MYcreenMode.xml" 라는 옵션으로
모니터 해상도를 재설정 해줄 수 있나 보더군요
MYcreenMode.xml 내용중에
<size width="1920" height="1080"/> 라는 항목에서
<size width="1024" height="768"/>등으로 숫자를 바꿔주고 저장하고
dc2.exe -configure="MYcreenMode.xml" 를
다시 실행해보면 해상도가 바뀌더군요.
문제는 수작업으로 XML 파일을 열고 숫자를 바꿔줘야 한다는것인데
검색해보니 Xml 파일 내용을 변경해주는 스크립트가 있는것 같습니다.
이쪽에 문외한 이다보니 내용등을 캡춰해 와서 시도 해봐도 잘 안되는군요.
혹여 관련 분야에 고수님 계시면 조언을 부탁드려 봅니다.
ahk 로 된 XML Explorer.exe 에서 불러다 고칠수는 있던데
간단히 커맨드 명령어 방식이나 ps1 VBS 등의 명령어 방식이
있었으면 합니다.
참고 DC2.zip (DC2.exe 는 개인과 비영리는 무료인가 봅니다.) RefreshWall.7z
일반적으로는 -0- 님 사용기에 올려주신 Diplay.exe 를 사용하면 가장 편하지만요
댓글 [7]
-
zerojiddu 2023.03.08 18:03 -
zerojiddu 2023.03.08 19:36 .ps1 으로 width, height 숫자부분만 본인이 입력해 바꾸려면
밑의 $source 부분에서
.xml이 있는 폴더위치만 바꿔주고
.ps1으로 저장하면 됩니다.
$width = Read-Host -prompt " width: "
$height = Read-Host -prompt " height: "
$source = Get-ChildItem C:\DC2\MyScreenMode.xml
$xml = [XML](Get-Content $source.FullName)
$Tnode = $xml.SelectSingleNode("//size[@width]")
$Tnode.SetAttribute('width', "$width")
$Tnode.SetAttribute('height', "$height")
$xml.Save($source.FullName) -
[벗님] 2023.03.08 21:25
덕분에 잘 되는걸 배웠습니다.
고맙습니다.
그리고 "1024" "768" 대신에 쌍따옴표안에 "\d+" "\d+" 를 넣으면 어떤값이 추출 되었나 몰라도
내가 원하는것으로 변환 할 수 있나 보군요.
이런식으로요.
$source = Get-ChildItem C:\DC2\MyScreenMode.xml
(Get-Content $source.FullName) -replace '<size width="\d+" height="\d+" />', '<size width="1920" height="1080" />' | Set-Content $source.FullName -ver실컴에 VHD 테스트 해보니
올려주신 내용중
$source = Get-ChildItem "X:\DC2\AC.xml"
$xml = [XML](Get-Content $source.FullName)
$Tnode = $xml.SelectSingleNode("//size[@width]")
$Tnode.SetAttribute('width', "1920")
$Tnode.SetAttribute('height', "1080")
$xml.Save($source.FullName)이런식으로 원하는 해상도 넣은것을 ps1 으로 만들고 하면 가장 간단 하군요.
덕분에 많은것을 배웁니다. 고맙습니다.
-
kernel 2023.03.08 18:12
질문에 언급되어 있는 Display.exe 라는 프로그램을...
리버스 엔지니어링으로 내부구조를 해킹 해보면...
WinXShell.exe 를 이용해서 ms-settings:display 라는 Shell 명령을 주는 아주 간단한 구조입니다.
WinXShell.exe... 코맨드 스크립트 등의 파일 들이 포터블 형식으로 Embedded 되어 있는 구조지요.
(Display.exe 자체는 의미가 없음)
해상도 바꾸는 거는 C#으로 간단하게 만들 수도 있고... 구글링하면 샘플 프로그램도 많이 있을텐데요.
-
[벗님] 2023.03.08 21:27
그렇군요....여러방법이 있나보군요.
좀더 찾아보고 배워야 겠습니다.
고맙습니다.
-
kernel 2023.03.09 00:36
PE를 만드는 것 내지 공부하는 것 같아서 보충으로 적으면...
WinxShell.exe는 오픈소스가 아니라 추측이지만(오픈소스라면 댓글 달아 주세요)
PE 구조로는 UWP WinRT UI 요소를 구축하기 어려워, DuiLib를 이용해서
MS의 Shell을 흉내내기 위해 native C++(UWP 구조가 아님) 구조로 만들어진 거로 보이는데...
WinXShell.exe 의 UI가 DuiLib를 이용하고 있는 것을 보면... 이 또한 추측인데...
중국쪽에서 만들어진 짝퉁이 아닐까 합니다.
-
[벗님] 2023.03.08 23:34
위 내용들을 활용하면 PE형 VHD등을 실컴에서 불러올때
먼저 디스플레이 드라이버를 불러와 설정한후에 DC2.exe 를 통해 모니터와 비디오 설정을 불러온후
그것을 바탕으로 내가 원하는 디스플레이 해상도를 설정해 주기 위함입니다.
각 프로그램 바로가기등에 옵션을 넣고 시작프로에 넣어 순서대로(이름조정) 실행되게 하면 되더군요.
역시 만만치가 않군요 약간씩의 저장 딜레이 때문에요
할수없이 AHK 이용해 시간차를 줘야 되네요. PE VHD 라서 스캐줄러등의 이용도 어려워서요.
실컴 PE VHD는 디스플레이 드라이버설치도 까다롭군요
MS 기본 디스플레이도 잘 안잡히구요 DRV_VHD.7z
안에 있는 display.inf를 수동으로 겨우 잡아봤네요.
파워쉘로 하면 간단해요.
-replace 'xml 에 있는 문구', '바꿀 문구'
만 그대로 적어주고 저장하면 돼요.
$source = Get-ChildItem C:\DC2\MyScreenMode.xml
(Get-Content $source.FullName) -replace '<size width="1920" height="1080" />', '<size width="1024" height="768" />' | Set-Content $source.FullName -ver