« [Zaurus] Rubyからシリアルポートをコントロール ruby-serialport | Main | [Zaurus] RubyとKeyHelper Appletで質問 »

2007.03.08

[Windows Mobile] Sigmarion III / jornada720でMortScriptを動かす

H/PCでもサスペンドから起きてQMAIL3で定期的にメールの送受信(定期巡回)ができたらどんなにいいことか、ということでMortScriptをH/PCで動かすべく頑張ってみました。

結果、NTT DoCoMo Sigmarion III、hp jornada720で動かすことができましたのでレポートしておきます。

まずはMortScriptの動作に必要なDLLは何か、という調査から。
僕がよく使う手である、GNU binutilsに収録されているstringsによるテキストの抜き出しを試みてみます。

strings MortScript.exe | grep dll >~/mortscript.txt

これは、ホーミンさんのサイトからダウンロードできるExecutabilty Check toolでチェック可能です。

COREDLL.dll
AYGSHELL.dll
cellcore.dll
CEShell.DLL
mfcce300.dll
ole32.dll
toolhelp.dll
WININET.dll

上記8つのdllがリストアップできました。これに依存しているんでしょう。

mfcce300.dllのダウンロード

詳しくは後述しますが、MortScriptの起動に必要なmfcce300.dllを置いておきます。

手元に無ければ、あるいは手元のmfcce300.dllではうまく動かない場合に使ってみてください。Pocket PC 2003用です。

「mfcce300.zip」をダウンロード

NTT DoCoMo Sigmarion IIIでのMortScriptの起動

MortScriptはWindows Mobile / Pocket PC用のアプリケーションなので、ホーミンさんのところに行ってダミーDll(H/PC2000以降用)を\Windowsに入れておきます。ROM上に既にあるファイルは入れ替える必要はありません。

GSFinder+TQでROMファイルを含む全ファイルを表示し精査していくと、ダミーDLLを入れてなおmfcce300.dllが足りないことが分かります。

HDDをあさってみると、Pocket PC 2003 SDKの中にmfcce300.dllがありました。パスで言うと以下です。

"C:\Program Files\Windows CE Tools\wce420\POCKET PC 2003\Mfc\Lib\armv4\mfcce300.dll"

これをSigmarion IIIの\Windowsに入れてみました。

MortScriptのcabは、Sigmarion IIIでは例によってCabPatcherでパッチを当てないとインストールできないので、処置しておきます。MortScriptの配布アーカイブの中にはcabのほか生でファイルが入っていますが、拡張子の関連付けのこともあるので、cabからインストールした方がいいと思います。

パッチを当てたらインストール。MortScriptはSDではなく、RAMの方にインストールしてください。

これで起動できました。RunAt()、Message()、PlaySound()、PowerOffなど試してみましたが、動きました。

既にH/PC用のmfcce300.dllを使っている場合、これに入れ替えるとほかのアプリケーションの動作に支障が出るので、続いて説明するjornada720の場合と同様、MortScript.exeのあるディレクトリにmfcce300.dllを入れて、ほかのアプリケーションが使わないように隔離するか、ホーミンさんのExecutabilty Check toolでMortScript.exeを、例えば「mfcce30p.dll」を読むよう書き換え、「mfcce30p.dll」にリネームしたPocket PC 2003用mfcce300.dllを\Windowsに共存させる、といった手を使って問題を回避してください。(ホーミンさんアドバイスありがとうございます)

これは既に確立されたTIPSのようですね。

hp jornada720でのMortScriptの起動

Sigmarion IIIと同じく、ホーミンさんのダミーDLLを\Windowsに入れます。既にROM上にあるファイルは入れなくて大丈夫です。

jornada720にはmfcce300.dllが\Windowsに最初から入っています。ROM上にあるファイルです。
ダミーDLLを入れると必要なdllはそろうので、MortScriptをcabからインストールします。
MortScriptはCFではなく、RAMの方にインストールしてください。

MortScript.exeを起動してみると、出るはずのダイアログが出ません。また、ハングアップしたようになってしまいます。

MortScript.exeと同じディレクトリにPocket PC 2003 SDKから抜いてきたmfcce300.dllを入れて、こっちを優先して使わせてみました。すると、起動できました。

\Windowsにmfcce300.dllをコピーできないjornada720の場合も、ホーミンさんのExecutabilty Check toolを使ってMortScript.exeを書き換え、リネームしたmfcce300.dllを\Windowsに置く手が使えます。

H/PCでサスペンドから起きての定期的メール送受信(定期巡回)

さて、これでMortScriptを動かす準備はできました。現時点での最新バージョン、RC11の起動を確認しています。

後は、以前のエントリ「Windows Mobile QMAIL3でサスペンドから起きて自動定期巡回(メール送受信)」を見て設定すれば、QMAIL3でサスペンドから起きての定期的メール送受信(定期巡回)ができると思いますよ!

常に最新のメールがInboxに入っていることになるので、H/PCのメール端末としての有用性は、これで100倍でしょう。

恐らく、jornada728、jornada710でも可能だと思います。

MortScriptをH/PCで動かすことに主眼を置いた説明することにも意味があると思ったのでこういったエントリにしてみました。

大体似たような内容を、「Sigmarion III / jornada720でもQMAIL3でサスペンドから起きて自動定期巡回(メール送受信)」とタイトルを変えて再度エントリしたいと思います。

|

« [Zaurus] Rubyからシリアルポートをコントロール ruby-serialport | Main | [Zaurus] RubyとKeyHelper Appletで質問 »