#http://www.ac-promenade.net/text/windowsmobile/ #Scripted by AC-Promenade http://www.ac-promenade.net/ #PowWow・サポート #PowWow_Sp.mscr #PowWowの時計表示の際、電波LEDも同時に一時点灯させられるので、 #キーロック時に電源ボタンを押し、時刻と電波LEDを数秒表示して、 #すぐ本体をポケットにしまえる、といった使い方ができるMortScript。 #PowWowを使用しない場合、定期画面消灯だけの機能も利用できます。 #●使用方法概要 #いくつかの動作は本文中の環境設定により変更できます。 #・本mscrを実行すると、PowWowがなければ画面消灯をします。 #・PowWowがあればPowWowを-dl(Display Off Lock)起動します。 #・PowWowにより、消灯ロック時は電源ボタンで時計を表示します。 #・PowWowが時計を表示中、電波LEDも一時点灯する設定ができます。 #・通常PowWowを起動すると、画面消灯してから時計を待機しますが、 # 時計を先に表示してから消灯、時計待機する様に設定できます。 #・Trigger_KeyLock.mscr等でキーロックスイッチとの連動を行えば # スイッチオンオフだけで本mscrとPowWowの利用、終了ができます。 #●使用の準備 #本mscrは、基本的には何もなくても単体で動作しますが、 #PowWowを利用していれば、PowWowの動作に準じます。 #電波LEDをGUI無しに点灯消灯するアプリがあれば #さらに同時に利用できます。(W-ZERO3系なら、RfLedToggle等) #元来PowWowは、キーロックスイッチの無いWS003SH用の設計なので #スイッチのある機種では、加えて連動環境の構築を推奨します。 #別途、拙作の"Trigger_KeyLock.mscr"を利用すれば、複雑な設定無く #瞬間的なキーロックスイッチオンオフ動作にも安定して動作し、 #また"TCPMP_Sp.mscr"併用時の自動切替にも対応しています。※ #その他のプログラムも複数、キーロック連動させることができます。 #この方法が最も安定して連動する環境だと思います。 #Trigger_KeyLockのデフォルト対応パス設定を合う様にして下さい。 #"Trigger_KeyLock.mscr"を使用せず自前で環境を構築する場合は、 #[HKEY_CURRENT_USER\Software\Sharp\PhoneStatus] #"Status0"=dword:00000001(10進)(キーロックオン) #をトリガーとして、本mscrを起動するようにして下さい。 #("MortScript" "cmdRegistryNotifyApp" "RegCondExec" 等) #またはキーロック時に本mscrを実行できる環境を用意して下さい。 #"KLChgExec"が有用だと思います。 #合わせてキーロックスイッチによってPowWowを終了させる手段と、 #画面の点灯が行える手段があれば、一揃いすると思います。 #"AppClose" "KeyInputEmulator" "KeyLockSuspender"あたりで #実現できそうです。(結局はMortScript単体利用が一番楽ですが。) #●動作確認デバイス #Advanced/W-ZERO3[es], WILLCOM 03 #他ZERO3系デバイスでも、動くかもしれません。 #PowWowを利用しなければ、その他機種でも動くかもしれません。 #もし他のWindows Mobile機でも動いたらご報告頂けると嬉しいです。 #●必要環境 #・MortScript4.1以上(それ以下でも動くかも)、mscrの関連付け。 # http://www.sto-helit.de/ (PCサイト) #●補足事項 #・Trigger_KeyLock (キーロックで指定アプリ群起動) # http://www.ac-promenade.net/text/windowsmobile/index.html#Trigger_KeyLock #・PowWow 1.7無印※ (基本は電源管理志向ですが、時計を利用) # http://w-zero3.org/uploader/src/up1198.zip #・RfLedToggle (GUI操作無しにZERO3系機種の電波LEDをトグルする) # http://w-zero3.org/uploader/src/up0763.zip #・cmdRegistryNotifyApp (非常駐でレジストリを監視) # http://ssipa.web.fc2.com/ #・RegCondExec (常駐してレジストリを監視) # http://www20.atwiki.jp/zero3_392/pages/10.html #・KLChgExec (キーロック時に任意のプログラムを実行) # http://w03holic.seesaa.net/article/64774968.html #・AppClose (コマンドのみで本体に様々な操作を行える) # http://d.hatena.ne.jp/KOTETU/00000114/p3 #・KeyInputEmulator (キー入力操作処理を代行) # http://www20.atwiki.jp/zero3_392/pages/13.html #・KeyLockSuspender (キーロックスイッチで画面操作) # http://dislife.com/software/ #・ExecIf (実行中のタスクを条件に起動するアプリを指定) # http://www.momo-lab.net/inu/execif.html #※PowWow17qfeの-dl実行は、システムの色々な処理を止めるようで、 #・本mscrのOnceLaunch=1の設定が有効になる前に6秒ほど静止する。 #・キーロックオフと同期させても、6秒ほど経過を要する。 #という、既知の問題があります。 #(電源キーを押せば、静止を中断してすぐ処理します。) #使用自体に問題はありませんが、上記の点を有効化するのであれば #あえて17無印の方を推奨しておきます。 #※PowWowは常に最前面のタスクとして動作しようとする特性上、 #TCPMP_Sp.mscrのキーロック中イヤホン操作機能とは相性が悪く、 #併用する場合、状況により起動を切替える環境が有効的です。 #拙作の"Trigger_KeyLock.mscr"を利用すれば、既に対応済みです。 #自前で構築するなら"MortScript" "ExecIf"あたりで #TCPMPのタスクを条件に切替えるようにして下さい。 #現状WVGA専用です。VGAやReal解像度の #PowWow画面情報を提供頂ければ対応したいと思います。 #本mscrのショートカットに、アイコンを利用したい場合は、 #ショートカットファイルのリンク先に、直接続けて #?\Program Files\PowWow\PowWow.exe,-101と追記して下さい。 #(インストールパスが異なる場合は、記述を修正して下さい。) #アンインストールの際は、本mscrを削除するだけで大丈夫です。 #レジストリの追加、別ファイルの作成等は行っていません。 #本mscrによって生じる不利益に当方は関与しません。 #設定変数値を除く内容に改ざんがない限り、再配布は自由です。 #内容に変更を加えた際の再配布は、必ずその変更前と変更後の #明記を、本文中にて行ってあれば構いません。 #--------------------------------------------------------------- #以下環境設定 #(書き換えの際、文字コードS-JISが変換されないよう御注意下さい。) #■PowWowがインストールされているパスを指定。 #パス指定先にファイルが存在しなければこの機能は無視されます。 #(故意に利用しないのであれば""内を空欄にでもして下さい。) PowWowPath="\Program Files\PowWow\PowWow.exe" #■PowWow起動直後に一度時計を表示する=1、しない=0。 OnceLaunch=0 #■GUI操作無く電波LEDをON/OFFするアプリの、各パスと引数を指定。 #パス指定先にファイルが存在しなければこの機能は無視されます。 #(故意に利用しないのであれば""内を空欄にでもして下さい。) #これはPowWow機能を同時に利用している場合に限り有効になります。 RfLedOnPath="\Program Files\RfLedToggle\RfLedToggle.exe" RfLedOnArgs="on" RfLedOffPath="\Program Files\RfLedToggle\RfLedToggle.exe" RfLedOffArgs="off" #■PowWowを使用しない場合、約何秒毎に画面消灯するか整数で指定。 DispOffSec=10 #--------------------------------------------------------------- #バージョン履歴 #1.01 ソースに変更は無いけど、補足説明を追加。 #1.00 公開。 #--------------------------------------------------------------- #Main Script #■PPC制限 If(MortScriptType() ne "PPC") message("This script is PPC only.") Exit EndIf #PowColor=16776191 PowColor=31231 RegKeyLock="RegRead (""HKCU"",""Software\Sharp\PhoneStatus"",""Status0"")" #RegWrapper="RegRead (""HKCU"",""Software\Sharp\ShPhoneLib"",""WrapperActiveComm"")" #RegLockPhone="RegRead (""HKCU"",""Software\Sharp\PhoneApp"",""LockPhone"")" #■準備、PowWowが使えるならとにかく起動 If (FileExists (PowWowPath)) Run (PowWowPath,"-dl") #■RfLedToggleが使えるならさらにその準備 If ( FileExists (RfLedOnPath) and FileExists (RfLedOffPath) ) RfToggleUse=1 Call ("RfLedOffChk") Switch (RegRead ("HKCU","Software\AltWorks\PowWow","TimeOut")) Case (0) PowWowTime=5 Count_X=6 Count_Y=7 Case (1) PowWowTime=10 Count_X=8 Count_Y=8 Case (2) PowWowTime=15 Count_X=11 Count_Y=7 Case (3) PowWowTime=30 Count_X=13 Count_Y=8 EndSwitch PowWowTime=PowWowTime*2 Else RfToggleUse=0 EndIf ErrorLevel ("syntax") WaitFor ("PowWow",5) ErrorLevel ("error") If (OnceLaunch=1) ToggleDisplay (True) EndIf EndIf #■PowWow使うRfLedToggle処理 If (RfToggleUse=1) While (WndExists ("PowWow")) If (Screen ("portrait")) PowWow_X=366 PowWow_Y=717 Else PowWow_X=526 PowWow_Y=423 EndIf PowWowError=PowWowError+1 #■PowWowの変化が推測時間+5秒程取れなかったので、LED途中消灯の処理 If (PowWowError=PowWowTime) Call ("RfLedOffChk") #■LED消灯中、PowWowのカウント進行をキャッチ ElseIf (RFIndicator=0) If (ColorAt (PowWow_X+Count_X,PowWow_Y+Count_Y)=PowColor) Call ("RfLedOnChk") EndIf #■LED点灯中、PowWow残り1秒ならLED消灯 ElseIf (ColorAt (PowWow_X+7,PowWow_Y+7)=PowColor) Call ("RfLedOffChk") EndIf Sleep (500) EndWhile Call ("RfLedOffChk") #■PowWow使わない通常画面オフループ処理 ElseIf (Not WndExists ("PowWow")) If (DispOffSec<=1) DispOffSec=1 EndIf DispOffSec=DispOffSec*1000 While (Eval (RegKeyLock)=1) ToggleDisplay (False) Sleep (DispOffSec) EndWhile EndIf #--------------------------------------------------------------- #Sub Script #■PowWow数字トリガー(ten桁 one桁 Nine Four One) #tN=ColorAt ((PowWow_X+13),(PowWow_Y+8)) #tF=ColorAt ((PowWow_X+11),(PowWow_Y+7)) ##tO=ColorAt ((PowWow_X+12),(PowWow_Y+7)) #oN=ColorAt ((PowWow_X+8),(PowWow_Y+8)) #oF=ColorAt ((PowWow_X+6),(PowWow_Y+7)) ##oO=ColorAt (PowWow_X+7,PowWow_Y+7) #■Call ("RfLedOnChk") Sub RfLedOnChk Run (RfLedOnPath,RfLedOnArgs) RFIndicator=1 PowWowError=0 EndSub #■Call ("RfLedOffChk") Sub RfLedOffChk Run (RfLedOffPath,RfLedOffArgs) RFIndicator=0 PowWowError=0 EndSub