#http://www.ac-promenade.net/text/windowsmobile/ #Scripted by AC-Promenade http://www.ac-promenade.net/ #WM5torage・サポート #WM5torage_Sp.mscr #SDカードのファイルをActiveSyncより速いストレージ認識で操作する #WM5torageの動作を補助するMortScript。 #●使用方法概要 #いくつかの動作は設定により変更できます。 #・WM5torage側で普段Activeにする設定で実行、終了しておきます。 #・以後、本mscrを実行するとWM5torageを起動します。 #・WM5torageがInactiveであれば、すぐActiveにします。 #・設定により、ActiveSync中の場合はActiveにしません。 #・設定により、PCとの接続時に画面を消灯して電池を節約できます。 #・設定により、Deactivateにすると、WM5torageを自動終了します。 #・設定により、USBケーブルを抜いても、自動終了します。※ #・設定により、"画像メモリ カードが〜"の通知を飛ばせます。 #●動作確認デバイス #Advanced/W-ZERO3[es], WILLCOM 03 #ソフトキーの概念が必要なので、Windows Mobile6以上。 #他ZERO3系デバイスでも、動くかもしれません。 #その他機種に関しても、動くかもしれません。 #もし他のWindows Mobile機でも動いたらご報告頂けると嬉しいです。 #●必要環境 #・MortScript4.1以上(それ以下でも動くかも)、mscrの関連付け。 # http://www.sto-helit.de/ (PCサイト) #・WM5torage 1.8以上 (PCからマスストレージ接続でmicroSDにアクセス) # http://handheld.softpedia.com/get/System-Utilities/Enhancements/WM5torage-8397.shtml #●補足事項 #WM5torageの設定を済ませてから、本mscrを使用して下さい。 #※PC側での安全な取り外し操作を忘れないよう注意してください。 #本mscrのショートカットに、アイコンを利用したい場合は、 #ショートカットファイルのリンク先に、直接続けて #?\Program Files\WM5torage\WM5torage.exe,-101と追記して下さい。 #(インストールパスが異なる場合は、記述を修正して下さい。) #アンインストールの際は、本mscrを削除するだけで大丈夫です。 #レジストリの追加、別ファイルの作成等は行っていません。 #本mscrによって生じる不利益に当方は関与しません。 #設定変数値を除く内容に改ざんがない限り、再配布は自由です。 #内容に変更を加えた際の再配布は、必ずその変更前と変更後の #明記を、本文中にて行ってあれば構いません。 #--------------------------------------------------------------- #以下環境設定 #(書き換えの際、文字コードS-JISが変換されないよう御注意下さい。) #■WM5torageのパス(パスが一致しなければそのまま終了します。) WM5torage="\Program Files\WM5torage\WM5torage.exe" #■起動時ActiveSyncを検知したら安全のため中断する=1、しない=0。 SafeActivSync=1 #■PC接続後、定期的に画面を消灯して電池節約する=1、しない=0。 DisplayOff=1 #■Deactivate時自動的に終了処理をするなら=1、でなければ=0。 AutoDeact=1 #■USBケーブル切断時自動的に終了処理をするなら=1、でなければ=0。 AutoUnPlug=1 #■自動終了後"画像メモリ〜"の通知を飛ばすなら=1、でなければ=0。 NotifyPass=1 #--------------------------------------------------------------- #バージョン履歴 #1.03 DispOff機能追加。 #1.02 あまり意味無いAutoActivSync廃止、SafeActivSync機能追加。 #1.01 デバイスがそれなりに軽量でないと動かない様なので微調整。 #1.00 公開。 #--------------------------------------------------------------- #Main Script #■PPC制限 If(MortScriptType() ne "PPC") message("This script is PPC only.") Exit EndIf FindRegWM5Drv="Find (RegRead (""HKLM"",""Drivers\Active""\WM5Found,""Key""),""WM5torage"")" RegActiveSync="RegRead (""HKLM"",""System\State\Hardware"",""Cradled"")" RegUsbDetect="RegRead (""HKLM"",""Drivers\USB\FunctionDrivers"",""UsbCableDetect"")" CheckDeact="(AutoDeact=1) and (Eval (FindRegWM5Drv)=0)" CheckActiveSync="(AutoActivSync=1) and (Eval (RegActiveSync)=1)" CheckUnPlug="(AutoUnPlug=1) and (Eval (RegUsbDetect)=0) and (Eval (FindRegWM5Drv)>0)" AutoActivSync=0 #■WM5torage起動 Run (WM5torage) ErrorLevel ("syntax") WaitFor ("WM5torage",5) ErrorLevel ("error") #■ActiveSyncがあれば、中断 If( (Eval(RegActiveSync)=1) and (SafeActivSync=1) ) Sleep (2000) Close("WM5torage") Sleep (1000) Exit EndIf #■WM5torage確認、InactiveならActiveにして再確認、ActiveならドライバKey位置記憶して次へ DrvCheck=0 While ( ProcExists ("WM5torage.exe") and (DrvCheck<2) ) WM5Found="" NewestKey="" ForEach FEBox in regSubkeys ("HKLM","Drivers\Active") If (NewestKey eq "") NewestKey=FEBox EndIf If (Find (RegRead ("HKLM","Drivers\Active"\FEBox,"Key"),"WM5torage")) WM5Found=FEBox EndIf EndForEach #■LeftSoft後の走査でWM5torageがなければ終了。あれば次へ。 If (DrvCheck=1) If (WM5Found eq "") Exit Else DrvCheck=2 EndIf #■ドライバが追加されてたらやり直し、でなければLeftSoftしてラストチェック。 Else EndCheck=1 ForEach FEBox in regSubkeys ("HKLM","Drivers\Active") If (EndCheck=1) EndCheck=0 If (NewestKey ne FEBox) DrvCheck=0 ElseIf (WM5Found eq "") DrvCheck=1 SendLeftSoft ("WM5torage") While (Eval (RegActiveSync)=1) Sleep (1000) EndWhile Sleep (2100) EndIf EndIf EndForEach EndIf EndWhile #■オート切断が有効なら、条件あるまで監視 If (AutoDeact+AutoActivSync+AutoUnPlug+DisplayOff>0) i=0 OkUsb=0 OkKill=0 While (ProcExists ("WM5torage.exe")) If (OkUsb=0) If ( (Eval (RegUsbDetect)=1) and (Eval (RegActiveSync)=0) ) OkUsb=1 EndIf EndIf If ( (DisplayOff=1) and (OkUsb=1) ) If(i < 19) i=i+1 Else i=0 ToggleDisplay (False) EndIf EndIf If ( Eval (CheckUnPlug) and (OkUsb=1) ) If (DisplayOff=1) Sleep (300) EndIf SendLeftSoft ("WM5torage") OkKill=1 ElseIf ( Eval (CheckDeact) or ( Eval (CheckActiveSync) and (OkUsb=1) ) ) OkKill=1 EndIf Sleep (2000) If ( (OkKill=1) and ProcExists ("WM5torage.exe") ) If (NotifyPass=1) Show ("WM5torage") Sleep (300) EndIf Close ("WM5torage") Sleep (500) Exit EndIf EndWhile EndIf