#http://www.ac-promenade.net/text/windowsmobile/ #Scripted by AC-Promenade http://www.ac-promenade.net/ #トリガー・SHARPフォン #Trigger_ShPhone.mscr #電話状態と連動して、複数のプログラムを起動できるMortScript。 #●使用方法概要 #いくつかの動作は本文中の環境設定により変更できます。 #・使用の準備を整えます。(詳細は後述) #・電話着信時 #・電話発信時 #・通話開始時 #・相手切断時 #・待機開始時 #・以上の各状態に応じて、指定した任意のアプリ群を起動できます。 #・相手切断時には、自動で終話キー押下処理を行う設定もできます。 #(通話時間は、拙作のShPhone_Sp.mscrログ機能でも確認できます。) #●使用の準備 #"cmdRegistryNotifyApp"をインストールした上で、 #本文設定AutocRNApp=1にし、本mscrを実行すれば自動適用します。 #この方法が最も安定して動作すると思います。※ #自前で動作環境を構築する場合は、AutocRNApp=0にして、 #[HKEY_CURRENT_USER\Software\Sharp\PhoneApp] #"LockPhone"=dword:00004097(10進)(電話着信時) #及び、dword:00131073(10進)(電話発信時) #及び、dword:00262145(10進)(通話開始時) #及び、dword:01048577(10進)(相手切断時) #及び、dword:00000000(10進)(待機開始時) #を、トリガーにして本mscrを起動するようにして下さい。 #"MortScript" "RegCondExec" が有用だと思います。 #(基本動作が重複するのであまり意味は無いかもしれませんが。) #●動作確認デバイス #Advanced/W-ZERO3[es], WILLCOM 03 #他ZERO3系デバイスでも、動くかもしれません。 #SHARPの電話アプリが対象なので、その他機種は動かないと思います。 #もし他のWindows Mobile機でも動いたらご報告頂けると嬉しいです。 #●必要環境 #・MortScript4.1以上(それ以下でも動くかも)、mscrの関連付け。 # http://www.sto-helit.de/ (PCサイト) #●補足事項 #・cmdRegistryNotifyApp (非常駐でレジストリを監視) # http://ssipa.web.fc2.com/ #・ShPhone_Sp (話画面を消灯し電池節約、必要なら通話タイマーや通話ログも。) # http://www.ac-promenade.net/text/windowsmobile/index.html#ShPhone_Sp #・RegCondExec (常駐してレジストリを監視) # http://www20.atwiki.jp/zero3_392/pages/10.html #※他に、これと同一タイミングで起動するmscrを利用している場合、 #MortScript.exe本体が行う複数タスク管理中に実行されたmscrが、 #処理を無視される場合があります。 #これを回避するには、本mscrに起動を代行させて #各mscrの起動タイミングを、ほんの少しずらす様にして下さい。 #アンインストールの際は、"AutocRNApp"による #登録を行っていれば解除して、本mscrを削除するだけで大丈夫です。 #その他レジストリの追加、別ファイルの作成等は行っていません。 #本mscrによって生じる不利益に当方は関与しません。 #設定変数値を除く内容に改ざんがない限り、再配布は自由です。 #内容に変更を加えた際の再配布は、必ずその変更前と変更後の #明記を、本文中にて行ってあれば構いません。 #--------------------------------------------------------------- #以下環境設定 #(書き換えの際、文字コードS-JISが変換されないよう御注意下さい。) #■本mscrを、cmdRegistryNotifyAppで登録し実行する=1、しない=0。 #また登録用、解除用それぞれのパスも合わせて下さい。 #初回実行時のみ登録/解除を行います。後はそのまま使用して下さい。 #本mscrの名前やパスを変更した場合、再度実行すれば再登録します。 #注意!本mscrを削除する際は、事前に=0にして解除実行して下さい。 #予めファイル名に任意の文字を加えておけば、忘れないと思います。 AutocRNApp=1 cRNAppPath="\Program Files\cmdRegistryNotifyApp\cmdRegistryNotifyApp.exe" cRStopPath="\Program Files\cmdRegistryNotifyApp\cmdRegistryStopNotification.exe" #■相手切断時、自動的に終話キー押下処理をする=1。しない=0。 #(通話時間の確認は、拙作のPhone_Sp.mscrログ機能でもできます。) TermToHook=1 #■電話着信時に実行させるプログラムを指定。※詳細は後述 ComeCmd[1]="\Program Files\MortScript\TCPMP_Sp.mscr" #■電話発信時に実行させるプログラムを指定。※詳細は後述 SendCmd[1]="\Program Files\MortScript\TCPMP_Sp.mscr" #■通話開始時に実行させるプログラムを指定。※詳細は後述 CallCmd[1]="\Program Files\MortScript\ShPhone_Sp.mscr" #■相手切断時に実行させるプログラムを指定。※詳細は後述 TermCmd[1]="" #■待機開始時に実行させるプログラムを指定。※詳細は後述 WaitCmd[1]="" #※Cmdは実行パス、Argはその引数、Slpは実行までの待機時間(ms)。 #複数指定は、以下の例を参考に設定項目を連番で追加して下さい。 #ComeCmd[2]="電話着信時、2番目に実行するプログラムのパス" #ComeArg[2]="電話着信時、2番目に実行するプログラムの引数" #CallCmd[3]="通話開始時、3番目に実行するプログラムのパス" #CallSlp[3]=通話開始時、3番目のプログラム実行までの待機時間(ms) #("Arg"と"Slp"のみ、項目自体を省略しても構いません。) #記述ルールはMortScript準拠なので、マニュアルを参照して下さい。 # http://home.att.ne.jp/wave/deox_pop/mortscript.html#7.3 #複雑な処理が必要なら自身でmscrを組んだ方が便利かも知れません。 #--------------------------------------------------------------- #バージョン履歴 #1.00 公開。 #--------------------------------------------------------------- #Main Script #■PPC制限 If(MortScriptType() ne "PPC") message("This script is PPC only.") Exit EndIf #■cmdRegistryNotifyApp登録/解除 Call ("AutocRNAppChk") #■メイン処理 RegLockPhone="RegRead (""HKCU"",""Software\Sharp\PhoneApp"",""LockPhone"")" ValLockPhone=Eval (RegLockPhone) While (1) Switch (ValLockPhone) Case (4097) SwMode="Come" Call ("UsrProc") Case (131073) SwMode="Send" Call ("UsrProc") Case (262145) SwMode="Call" Call ("UsrProc") Case (1048577) If (TermToHook=1) PostMessage ("電話 ",1586,450,0) Sleep (300) ToggleDisplay (True) EndIf SwMode="Term" Call ("UsrProc") If (TermToHook=1) Sleep (1000) EndIf Case (0) SwMode="Wait" Call ("UsrProc") EndSwitch Sleep (300) OutValLockPhone=Eval (RegLockPhone) If (OutValLockPhone<>ValLockPhone) ValLockPhone=OutValLockPhone Else Exit EndIf EndWhile #--------------------------------------------------------------- #Sub Script #■Call ("UsrProc") ユーザー設定処理 Sub UsrProc If ([SwMode&"Cmd[1]"] ne "") i=1 ForEach Cmd in array (SwMode&"Cmd") Arg=[SwMode&"Arg["&i&"]"] Slp=[SwMode&"Slp["&i&"]"] If (Slp>=1) Sleep (Slp) EndIf If (Arg eq "") Run (Cmd) Else Run (Cmd,Arg) EndIf i=i+1 EndForEach EndIf EndSub #■Call ("AutocRNAppChk") cmdRegistryNotifyApp登録/解除 Sub AutocRNAppChk cmdID="Trigger_ShPhone.AutocRNApp" ThisFilePath=SystemPath ("ScriptPath")\SystemPath ("ScriptName")&SystemPath ("ScriptExt") MortScriptPath=SystemPath ("ScriptExe")\"MortScript.exe" RegNtfKeyExs="RegKeyExists (""HKLM"",""System\Notifications\"&cmdID&""")" RegNtfAppVal="RegRead (""HKLM"",""System\Notifications\"&cmdID&""",""Application"")" AutocRNAppRsl=0 If (AutocRNApp=0) If (Eval (RegNtfKeyExs)=1) If ( FileExists (cRNAppPath) and FileExists (cRStopPath) ) SetOff="3;"&cmdID Run (cRStopPath,SetOff) AutocRNAppRsl=1 Else AutocRNAppRsl=2 EndIf EndIf ElseIf (Eval (RegNtfAppVal) ne """"&MortScriptPath&""" """&ThisFilePath&"""") If ( FileExists (cRNAppPath) and FileExists (cRStopPath) ) cmdReg="HKCU;Software\Sharp\PhoneApp;LockPhone" cmdComp=0 cmddwMask="-" cmddw=0 SetOff="0;"&cmdID RunWait (cRStopPath,SetOff) Sleep (300) SetOn="3;"&cmdID&";"&cmdReg&";"&MortScriptPath&";'"""\ &ThisFilePath&"""';-;-;-1;1;"&cmdComp&";"&cmddwMask&";"&cmddw Run (cRNAppPath,SetOn) AutocRNAppRsl=1 Else AutocRNAppRsl=2 EndIf EndIf If (AutocRNAppRsl=1) Exit ElseIf (AutocRNAppRsl=2) If (Not FileExists (cRNAppPath)) Message ("cmdRegistryNotifyApp.exe^NL^が見つかりません。") EndIf If (Not FileExists (cRStopPath)) Message ("cmdRegistryStopNotification.exe^NL^が見つかりません。") EndIf Exit EndIf EndSub