네이버 쪽지로 받았던 profile 설정 관련 질의 내용을 포스팅해봅니다.


답변 내용



진동 모드로 변경하는 방법, 현재 미라지의 모드를 판별하는 방법, 미라지에 진동을 울리게 하는 방법 세가지 중
아마도 진동 모드로 변경하는 방법을 문의하신 것 같은데 행여나 원하시는 기능 중 나머지 2개의 방법도 필요하시지
않을까 싶어서 다 적어봅니다.



1. 우선 진동을 울리는 방법
현재 profile(진동/무음/벨소리 모드)과 상관 없이 일정 시간 미라지를 떨게 만드는 방법입니다.

Mortscript 함수 중 vibrate()를 사용하시면 됩니다.
괄호 안에는 진동을 울릴 시간(1/1000 초 단위)을 적어주시면 됩니다.
vibrate.mscr 첫 줄 내용에 vibrate(100) 이라고 쓰여 있는 것은
0.1초간 진동을 울리라는 것입니다.
vibrate.mscr 실행 여부를 진동으로 판별할 수 있게 하고자 집어넣은 함수입니다.



2. profile을 진동 모드로 변경하기
mortscript 자체 기능과 레지스트리 변경을 통해서도 구현이 가능하기는 한 것 같은데
제 경우엔 profile 변경 프로그램을 사용했습니다.

vibrate.mscr 파일의 두번째 줄 내용으로 setvolume.exe라는 프로그램입니다.
용량도 6.5 kb 밖에 되지 않으며 파라메터를 통해서 profile 관련 모든 작업을 할 수 있어서
딱 좋은 프로그램이지요..

setvolume.exe의 파라메터와 기능은 아래와 같습니다.

-o : 벨소리 모드
-v : 진동 모드
-m: 무음 모드
-1: 볼륨 20%
-2: 볼륨 40%
...
-5: 볼륨 100%

mortscript에서 프로그램을 실행하는 함수는 run("실행파일", "파라메터")이며
진동 모드로 변경하기 위해서는 아래와 같이 함수를 써 주시면 됩니다.

run("\Windows\setvolume.exe", "-v")

여기서 \Windows\는 제가 setvolume.exe를 넣어둔 경로입니다.
만약 벨소리 모드로 변경하시려면 아래와 같이 하시면 되겠습니다.

run("\Windows\setvolume.exe", "-o")



3. 현재 profile 확인하기
현재 profile은 아래 레지스트리를 확인하시면 됩니다.

HKCU\ControlPanel\Sounds\RingTone0\Sound

위 레지스트리는 모드에 따라 아래 값을 가집니다.

무음모드: *none*
진동모드: *vibrate*
벨소리모드: 벨소리 파일의 경로 및 파일명

제가 만든 롬에서 무음 모드일 경우 진동 모드로 강제 변경하는 스크립트는
무한 반복하여 실행되는 S2PAlbum.mscr에 들어있습니다.
레지스트리를 감시하고 있다가  레지스트리 변경이 있을 때만 mortscript를 실행시킬
방법이 없어서 무한 반복 실행되는 스크립트를 만들어서 레지스트리를 감시하도록 했습니다.

제가 만든 S2PAlbum.mscr 에서 모드 변경 관련 내용만 딱 뽑아내면 아래와 같습니다.


while(1)
Sleep(2000)
# 아래 내용을 2초에 한번 무한 반복함

If(RegRead("HKCU", "ControlPanel\Sounds\RingTone0", "Sound" ) eq "*none*" )
# 무음 모드로 설정되었을 경우 진동 모드로 강제 변경
Vibrate( 1000 )
CallScript( "\Windows\vibrate.mscr" )
ElseIf( RegRead("HKCU", "ControlPanel\Sounds\RingTone0", "Sound" ) eq "*vibrate*" )
# 진동 모드에서는 아무일도 안함
Sleep( 1000 )
Else
# 벨소리 모드에서 벨소리가 0으로 설정 되었을 때 40%로 변경
If( RegRead( "HKCU", "ControlPanel\Volume", "Ringer" ) = 0 )
Vibrate( 1000 )
RegWriteDword( "HKCU", "ControlPanel\Volume", "Ringer", 858993459 * RegRead( "HKCU", "Software\NotME\MISC", "PhoneVol" ) )
RegWriteDword( "HKCU", "ControlPanel\SoundCategories\Ring", "InitVol", RegRead( "HKCU", "Software\NotME\MISC", "PhoneVol" ) )
EndIf
EndIf

Endwhile


마지막으로 제 롬에 사용된 스크립트와 setvolume.exe를 첨부합니다.


질문 내용


안녕하세요~~ 무카무카님, 설연휴는 잘 보내고 계시는지요. 다음이 아니라 한 가지 질문이 있어 쪽지를 드립니다. 무카무카님이 미라지 롬키친 파일을 만드실 때 롬키친 안에 Mortscript로 미라지가 무음이면 강제로 진동 모드로 바꾸는 스크립트를 작성하신 것으로 알고 있습니다. ("\Windows\vibrate.mscr") 제가 드리고 싶은 질문은 어떻게 미라지를 강제로 진동 모드로 바꿀 수 있는지를 알고 싶습니다. 바쁘시겠지만 방법을 알려주시면 감사하겠습니다. 또는 'vibrate.mscr'와 같이 볼륨과 관련된 스크립트를 메일로 보내주시면 더욱 감사하겠습니다. 그럼, 남은 설연휴 편안히 보내시길 바라겠습니다.