#http://www.ac-promenade.net/text/windowsmobile/ #Scripted by AC-Promenade http://www.ac-promenade.net/ #WM5torage・サポートHB #WM5torage_Sp_HB.mscr #SDカードのファイルをActiveSyncより速いストレージ認識で操作する #WM5torageの動作を補助するMortScript。 #●使用方法概要 #いくつかの動作は設定により変更できます。 #・WM5torage側で普段Activeにする設定で実行、終了しておきます。 #・以後、本mscrを実行するとWM5torageを起動します。 #・WM5torageがInactiveであれば、すぐActiveにします。 #・設定により、ActiveSync中の場合はActiveにしません。 #・設定により、PCとの接続時に画面を消灯して電池を節約できます。 #・設定により、サスペンド移行を抑制します。 #・設定により、Deactivateにすると、WM5torageを自動終了します。 #・設定により、USBケーブルを抜いても、自動終了します。※ #・設定により、"画像メモリ カードが〜"の通知を飛ばせます。 #●動作確認デバイス #HYBRID W-ZERO3 #Windows Mobile6.5系なら、動くのかもしれません。 #もし他の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 #■PC接続中、サスペンドの移行を定期的に抑制する=1、しない=0。 NotSuspend=1 #■USBケーブル切断時に、自動終了処理をする=1、しない=0。 AutoUnPlug=1 #■自動終了後"画像メモリ〜"の通知を飛ばす=1、しない=0。 NotifyPass=1 #--------------------------------------------------------------- #バージョン履歴 #1.10 色々と仕様が違う感じなので多々改変、AutoDeactは廃止に。 #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\BuiltIn\UsbOtg"",""ChargerMode"")" #■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 (4200) EndIf EndIf EndForEach EndIf EndWhile #■接続後の処理が有効なら、条件あるまで監視 If (DisplayOff+NotSuspend+AutoUnPlug > 0) i=0 OkUsb=0 OkKill=0 While (ProcExists ("WM5torage.exe")) If (OkUsb=0) If (Eval (RegUsbDetect)=0) OkUsb=1 EndIf EndIf If ( (DisplayOff+NotSuspend >= 1) and (OkUsb=1) ) If(i < 13) i=i+1 Else i=0 If (DisplayOff=1) ToggleDisplay (False) EndIf If (NotSuspend=1) IdleTimerReset EndIf EndIf EndIf If ( (AutoUnPlug=1) and (OkUsb=1) and (Eval(FindRegWM5Drv)=0) ) UsbFst=Eval (RegUsbDetect) Sleep(1450) UsbScd=Eval (RegUsbDetect) Sleep(1450) If ( (UsbFst=2) and (UsbScd=2) and (Eval(RegUsbDetect)=2) ) If (DisplayOff=1) ToggleDisplay (True) EndIf Sleep (200) SendLeftSoft ("WM5torage") OkKill=1 Sleep (2237) EndIf EndIf Sleep (2237) If ( (OkKill=1) and ProcExists ("WM5torage.exe") ) If (NotifyPass=1) Show ("WM5torage") Sleep(500) EndIf Close ("WM5torage") Sleep (1000) Exit EndIf EndWhile EndIf