#http://www.ac-promenade.net/text/windowsmobile/ #Scripted by AC-Promenade http://www.ac-promenade.net/ #PapeCale・サポート #PapeCale_Sp.mscr #WMに依存しない軽量なカレンダー予定ソフトPapeCaleを #メインPIMとして利用するのを目的とし、PapeCale、PapeTrans、 #使用していればViewText、ViewTextCalendar等との #動作や連携を補助するMortScript。 #●使用方法概要 #いくつかの動作は設定により変更できます。 #・本mscrを実行すると、PapeCaleが起動します。 #・スケジュール更新終了後、設定有効ならPapeTransを実行します。 #・ViewText等の使用時に、Today画面も更新する設定ができます。 #・Today画面表示時にPapeCaleを即終了する設定ができます。 #・本mscrを複製すれば複数のppcファイルが扱えます。 #・日付変更時に自動でPapeTransやToday更新を行う設定ができます。 #・引数TransOnly=1で呼び出せば、PapeTrans用処理のみ行えます。※ #●動作確認デバイス #Advanced/W-ZERO3[es], WILLCOM 03, HYBRID W-ZERO3 #他ZERO3系デバイスでも、動くかもしれません。 #その他機種はPapeCaleが動くなら動くかもしれません。 #もし他のWindows Mobile機でも動いたらご報告頂けると嬉しいです。 #●必要環境 #・MortScript4.1以上(それ以下でも動くかも)、mscrの関連付け。 # http://www.sto-helit.de/ (PCサイト) #・PapeCale 1.30以上 (軽量で優れたカレンダー型PIMソフト) # http://gen-soft.sakura.ne.jp/ #●補足事項 #・PapeTrans 1.20以上推奨 (PapeCaleの内容を任意に整形して出力) # http://gen-soft.sakura.ne.jp/ #・ViewText (txtファイルをTodayに表示してくれます、必要なら) # http://www.dream-seed.com/weblog/archives/2006/12/viewtext_12/ #・#Calendar_ViewText (テキストファイルのカレンダーを生成) # http://www.ac-promenade.net/text/windowsmobile/index.html#Calendar_ViewText #※引数は、[\Program Files\MortScript\MortScript.exe]に対して、 #["\Program Files\MortScript\PapeCaleTrans.mscr" TransOnly=1]を #引数として渡すことに注意してください。(特に""の有無等。) #本mscrのショートカットに、アイコンを利用したい場合は、 #ショートカットファイルのリンク先に、直接続けて #?\Program Files\PapeCale\PapeCale.exe,-101と追記して下さい。 #(インストールパスが異なる場合は、記述を修正して下さい。) #アンインストールの際は、"AutoDailyRun"による日付変更時更新の #登録を行っていれば解除して、本mscrを削除するだけで大丈夫です。 #その他レジストリの追加、別ファイルの作成等は行っていません。 #本mscrによって生じる不利益に当方は関与しません。 #設定変数値を除く内容に改ざんがない限り、再配布は自由です。 #内容に変更を加えた際の再配布は、必ずその変更前と変更後の #明記を、本文中にて行ってあれば構いません。 #--------------------------------------------------------------- #以下環境設定 #(書き換えの際、文字コードS-JISが変換されないよう御注意下さい。) #■PapeCaleがインストールされているパスを指定。 PapeCalePath="\Program Files\PapeCale\PapeCale.exe" #■本mscrが処理対象とするppcファイルのパスを指定。 ppcFilePath="\My Documents\PapeCale\MyMemo.ppc" #■PapeCaleをToday画面表示時に即終了させる=1、させない=0。 #(最小化時に即終了する様になるので、終了操作が省略できます。) PapeCaleEnd=0 #■PapeTransがインストールされているパスを指定。 #(利用していなければ、特に変更の必要はありません。 #故意に利用しないのであれば""内を空欄にでもして下さい。) PapeTransPath="\Program Files\PapeTrans\PapeTrans.exe" #■PapeTransに渡す利用モードの引数を指定。 PapeTransArgs="-t2" #■PapeTrans更新実行後、Today画面を更新する=1、しない=0。 ReToday=0 #■Calendar_ViewTextを利用する場合パスを指定。 #(利用していなければ、特に変更の必要はありません。 #故意に利用しないのであれば""内を空欄にでもして下さい。) TextCalendarPath="\Program Files\MortScript\Calendar_ViewText.mscr" #■日付変更時、自動でTransOnly=1起動をする=1、しない=0。 #初回実行時のみ登録/解除を行います。後はそのまま使用して下さい。 #Notificationsの登録なので常駐しません、自動削除も行っています。 #日付変更起動しなかった時は、次回本mscr起動時に再登録されます。 #本mscrの名前やパスを変更した場合PapeCale更新時に修正されます。 #本mscrを削除する際は、事前に=0にして解除実行して下さい。 #予めファイル名に任意の文字を加えておけば、忘れないと思います。 #RunAtがあるなら、=0にして自前で登録管理しても良いと思います。 AutoDailyRun=1 #■日付変更時のTransOnly=1起動を、0時0分何秒に行うか整数で指定。 #特に複数の同時刻処理が懸念されるなら、適切に指定して下さい。 OffSetSec=45 #--------------------------------------------------------------- #バージョン履歴 #1.01 Calendar_ViewText使用時、PapeCale予定との連動機能を追加。 #1.00 公開。 #--------------------------------------------------------------- #Main Script #■PPC制限 If(MortScriptType() ne "PPC") message("This script is PPC only.") Exit EndIf #LastQueueSt PreAutoDailyRun=1 Tomorrow=1240358445 LastFilePath="\Program Files\MortScript\PapeCale_Sp_Q.mscr" #LastQueueEd If (TransOnly<>1) If (AutoDailyRun<>PreAutoDailyRun) Call ("RunAtQueue") If (AutoDailyRun=1) Message ("日付変更時の自動起動を^NL^登録しました。") Else Message ("日付変更時の自動起動を^NL^解除しました。") EndIf Exit ElseIf (FileExists (PapeCalePath)) OpenWindowName=FileBase (ppcFilePath)&(" - PapeCale") PreDate=FileModifyTime (ppcFilePath) #■状況により起動方法および待機方法を選定 If ( (PapeCaleEnd=0) and (Not ProcExists (FileBase (PapeCalePath)&".exe")) ) RunWait (PapeCalePath,ppcFilePath) Else If (ProcExists (FileBase (PapeCalePath)&".exe")) Show (OpenWindowName) Else Run (PapeCalePath,ppcFilePath) EndIf ErrorLevel ("syntax") WaitForActive (OpenWindowName,5) ErrorLevel ("error") Sleep (300) If (PapeCaleEnd<>0) #(判定をウィンドウ非アクティブ時としなかったのは、 #設定ダイアログが開けなくなるから。) While (WndExists(OpenWindowName)) Sleep (500) ErrorLevel ("syntax") WaitForActive ("Desktop",30) ErrorLevel ("error") If (WndActive ("Desktop")) If (WndExists (OpenWindowName)) #SendLeftSoft (OpenWindowName) Close (OpenWindowName) EndIf EndIf Sleep (500) EndWhile Else While (WndExists (OpenWindowName)) Sleep (2000) EndWhile EndIf EndIf Sleep(1000) EndIf ElseIf (AutoDailyRun<>PreAutoDailyRun) Call ("RunAtQueue") EndIf If ( (TransOnly=1) or (PreDate<>FileModifyTime (ppcFilePath)) ) If (TransOnly=1) ToggleDisplay (True) EndIf #■テキストカレンダー処理 If(FileExists(TextCalendarPath)) RunWait(TextCalendarPath) EndIf If ( FileExists (PapeTransPath)) RunWait (PapeTransPath,PapeTransArgs) If (ReToday=1) RedrawToday EndIf EndIf EndIf If (AutoDailyRun=1) If (TimeStamp() >= Tomorrow) Call ("RunAtQueue") EndIf EndIf #--------------------------------------------------------------- #Sub Script #■Call ("RunAtQueue") Notifications Queue 登録/解除 Sub RunAtQueue ThisFile=SystemPath ("ScriptName")&SystemPath ("ScriptExt") ThisFilePath=SystemPath ("ScriptPath")\ThisFile MortScriptPath=SystemPath ("ScriptExe")\"MortScript.exe" RemoveNotifications (""""&MortScriptPath&"""",""""&LastFilePath&""" TransOnly=1") If (AutoDailyRun=1) If (OffSetSec<=1) OffSetSec=1 EndIf Tomorrow=TimeStamp() - (TimeStamp() mod 86400) + 86400 + OffSetSec RunAt(Tomorrow,""""&MortScriptPath&"""",""""&ThisFilePath&""" TransOnly=1") EndIf If (FileExists (ThisFilePath)) ThisFileText=ReadFile (ThisFilePath,0,"jis") PostFileText=Part (ThisFileText,"^NL^#LastQueueSt",1,0)\ &"^NL^#LastQueueSt"\ &"^NL^PreAutoDailyRun="&AutoDailyRun\ &"^NL^Tomorrow="&Tomorrow\ &"^NL^LastFilePath="""&ThisFilePath&""""\ &"^NL^#LastQueueEd"\ &Part (ThisFileText,"^NL^#LastQueueEd",-1,0) Sleep (300) WriteFile (ThisFilePath,PostFileText,0,"jis") EndIf EndSub