起動しないCEアプリを動くようにする

ページ名:起動しないCEアプリを動くようにする

Windows CE アプリケーションの中には、Brain でダブルタップしても何も起こらなかったり、強制シャットダウンされたりして使えないものも多くあります。このページでは、そういったアプリを動作させられるかもしれない方法を紹介します。

目次

TL; DR[]

アプリが Brain で動かない原因は、主に以下が考えられます。

  • そもそも Windows CE 用アプリでない
  • Windows CE 用でも CPU アーキテクチャが違う
  • DLL が不足している
  • DLL 自体は存在するが、関数が不足している

よって、以下で動作する可能性が高いです。

  • Windows CE 用のアプリであることを確認する
  • Arm 用であることを確認する
  • MioPocket の System/CE5 フォルダや Sea of DLL に入れる
  • coredll.dll ハックを行う

XXX is not a valid Windows CE application.[]

アプリを起動したときにこのメッセージが出たら、そのアプリは Windows CE 用でないか、異なる CPU アーキテクチャ向けにコンパイルされたものであるか、破損したファイルであると考えられます。

まずは、再ダウンロードして再度実行してみてください。Brain はファイルシステムをよく壊すので、本体メモリーでも試してみると良いかもしれません。以上で直らなければ、次に進みます。

MioPocket の Program フォルダにある「PEINFO.EXE」を Brain で実行します。その後、メニューの「File」->「Open」を押し、ダイアログで EXE ファイルを選択します。OK を押してしばらくすると詳細が表示されるので、そこで以下の項目を確認します。

File Header -> Processor type4 行目の「Processor type」項目に「01C0(ARM)」「01C2(Unknow)」以外が出ていたら、そのアプリは Brain の CPU アーキテクチャ (Arm) 向けではありません。ここが違えば、次の「Subsystem」が正しくても動きません。ダウンロードしたサイトで他のバージョンが用意されている場合、「ARM」と書かれたものを選び直してください。Optional Header -> Subsystem少しスクロールしたところに Subsystem という項目があります。スクロールすると表示が崩れますが、文字を選択すれば正常になります。ここが「0002(Windows GUI)」となっている場合、それは Windows NT 用です。Brain で動作するのは「0009(WindowsCE)」のものです。

Windows CE 用 .NET Framework で作られたアプリの場合はこの限りではありませんが、そもそも Brain で .NET Framework は動きません。

なお、解析に失敗した場合はコンテキストメニューが表示されます。失敗する原因の多くは EXE が UPX で圧縮されていることなので、Windows PC 上で、MioPocket 4.0 に含まれる「Extras」->「Win32」->「UPX(Compressor)」->「decompress.cmd」にその EXE ファイルをドラッグ & ドロップして解凍し、もう一度 PEInfo に掛けてください。

落ちる・フリーズする[]

落ちる場合、/Windows/MyJITDebugger.exe を適当な EXE で上書きすると、強制リセットの代わりに上書きした EXE が実行されます。その状態で Scalpel のログを見ると、手掛かりとなる情報が出力されているかもしれません。

フリーズする場合、まずは少し待ちましょう。なかなか終わらない場合は、まず「シフト」を押して左上に表示されたらハングしていないので、もっと待てば完了する可能性があります。表示されなかった場合は、ハングしている可能性が高いのでリセットしましょう。MioPocket などで表示されないようになっている場合は、Brain の画面を閉じてその隙間から液晶を覗きます。画面が消えている場合は、おそらく処理中です。重いときのサスペンドは遅いためおそらくバックライトが消えているだけで、また画面を開いてしばらくするとサスペンドするはずです。そして、消えない場合はハングしています。背面のリセットボタンでリセットしましょう。

なお、Windows CE 2.11 用が落ちるので HPCPRO2000 用を代わりにダウンロードしたら動いた、ということもありました。ダウンロードするバージョンを変えてみるのも手です。また、後述の方法で DLL を追加している場合、その追加した DLL が壊れている・相性が悪いという場合もあります。

何も起きない[]

起動しようとしても何も起きない場合は、DLL 関係のことが多いです。

作業の前に Windows CE における DLL について説明しておきます。Windows CE はプログラムに DLL を要求されたとき、

  • メモリ上に同名の DLL が読み込まれている (他のプログラムが同名の DLL を使っている) なら、それを使います
  • メモリ上になければ「EXE があるフォルダ」「\Windows フォルダ」の順で DLL ファイルを探し、メモリに読み込みます

以上の処理で DLL が見つからなかった場合、CE 4.1 や CE 5.0 では「ライブラリが見つかりません」という趣旨のメッセージが出たのですが、CE 6.0 からはなぜか何も表示されなくなってしまいました。なので、何も表示されないなら大抵 DLL が原因です。

先述の PEInfo や Dependencies 等でも EXE がインポートする DLL は確認できますが、その中に実際に必要な関数が揃っているかまでは確認してくれません。よって、MioPocket の「MioAutoRun」->「Programs」->「TroNik」->「Run.exe」にある TroNic Run を使います。起動して「Browse...」で EXE ファイルを選択し、実行するとメッセージが表示されるはずなので、それに従って以下の手順を行います。これをメッセージが表示されなくなるまで繰り返します。

Could not load XXX.dll from any of the following directories:[]

XXX.dll が見つからないようです。Sea of DLL (V1.2/V2.0) か、MioPocket の「System」フォルダから目的の DLL を持ってきましょう。どちらにもない場合は、MioPocket 内全体を DLL 名で検索すると見つかるかもしれません。なお、セキュリティソフトが Sea of DLL に含まれるファイルを誤検出する場合があるので、使っている人は例外設定を行うか無効化しておきましょう[1]

\XXX\XXX\XXX.dll does not export function with ordinal number: YYY[]

XXX.dll に YYY という序数の関数が含まれていないようです。XXX.dll を違うものに変えればいいのですが、大抵 XXX.dll は coredll.dll という Brain の ROM に入っているファイルです。Windows CE において全てのアプリは coredll.dll を使うので常に「使用中」となっており、上書きができません。そこで、フル機能の coredll.dll を別の名前で用意し、EXE の DLL 参照部分にある「coredll」という文字列をバイナリエディタで書き換えることで、無理やり参照先を変更させます。ただし、これを行ったアプリでは「ファイルを開く」を含む全てのダイアログが表示されなくなります。ファイルを開いて編集し、保存するという利用方法が一般的な Office 系ソフトウェアでは致命的ですが、関連付けで開いて上書き保存する等で対処してください。

以下に coredll を変更する方法を示します。フル機能の coredll.dll は、CEをビルドするの手順で取得します。MioPocket や Sea of DLL に含まれる COREDL2.dll や COREDL3.dll は使用できません。

  1. 適当なバイナリエディタでアプリの EXE を開きます
    • PC 上でも Brain 上でも構いません。Brain なら PEInfo にバイナリ編集機能があります。PEInfo でファイルを開いた後、ツールバーの鉛筆ボタンを押して編集モードに切り替え、もう一度解析が終わったら Tools メニューの Hex view/edit でバイナリエディタが開きます。
  2. バイナリエディタで「COREDLL」という文字列を ASCII で検索します
    • PEInfo では、エディタ右側をタップし検索ダイアログを表示させ、左から 2 つ目の ASCII モードになっていることを確認し、入力欄に「COREDLL」と入力して OK を押します。検索時、大文字小文字は区別されます。
  3. 見つかった「COREDLL」を「COREDL2」等に書き換えます
    • この編集によって EXE のファイルサイズが変化すると破損するので、同じ長さのファイル名にします
  4. 用意したフル機能の coredll.dll を 3 で設定した名前 (この例では coredl2.dll) に改名し、アプリのフォルダに入れます
  5. 再び TroNik Run を実行し、coredll.dll のエラーが消えたことを確認します

以上の作業を行った上でも「coredll.dll does not export function...」が出る場合は、同梱の DLL についてもバイナリエディタで開き、同様の作業をする必要があるかもしれません。

なお、「coredll.dll does not export function...」エラーは Handheld PC 用アプリに多いです。Windows Mobile 用や Pocket PC 用が提供されている場合はそちらも試してみましょう。解像度が合わない、表示が崩れる、aygshell.dll などの DLL が沢山要るといった場合がありますが、coredll.dll ハックを回避できるかもしれません。

なにもメッセージが表示されない[]

MioPocket 内全体を追加した DLL 名で検索し、違うファイルサイズのものがあれば、それで置き換えればもしかしたら動くかもしれません。それでも起動しない場合、諦めてアプリのバージョンを変えるか、他のソフトに移りましょう。

ちなみにとあるアプリがこの状態になりましたが、実はバグで元々そのバージョンは起動しなかった、なんてこともありました。

  1. 初心者の中には、セキュリティソフトは必須と教えられてきたためにこの説明に驚いた方もいるかもしれません。詳細は省きますが、最近のセキュリティソフトは個人が作成したマイナーなソフトウェアを、大した根拠もなくマルウェアであると判断する傾向にあります(その方が検出率を稼げるのでしょうか)。それゆえ、ソフトウェア開発を行う上では事前に無効化や開発フォルダの除外設定を行うのが常識になっています。今回に関してはそもそも PC では実行すらできない Windows CE 専用 DLL ですから、有害なわけがありません。


特に記載のない限り、コミュニティのコンテンツはCC BY-SAライセンスの下で利用可能です。

シェアボタン: このページをSNSに投稿するのに便利です。


最近更新されたページ

左メニュー

左メニューサンプル左メニューはヘッダーメニューの【編集】>【左メニューを編集する】をクリックすると編集できます。ご自由に編集してください。掲示板雑談・質問・相談掲示板更新履歴最近のコメントカウン...

音楽を聴く

目次1 Xaudio MP3 Player2 Nitrogen3 Winamp3.1 導入3.2 使い方3.2.1 メニューの項目3.2.2 スキンの適用3.2.3 イコライザー3.2.4 プレイリス...

電子辞書を買う、その前に

このページでは、進学して初めて電子辞書を購入される方、新しい機種に乗り換える方のために、それぞれのニーズに合わせた電子辞書を紹介していきます。特に最近の Brain は Windows CE を活用す...

開発者用ツール

開発者用ツール.pngここでは、Brain 上で動作する開発者用ツールを紹介しています。Brain 用ソフトウェア開発には、開発環境・SDK も参照してください。ソフト名できること備考Scalpelシ...

開発環境・SDK

注意: 2021年に発売された第5世代に該当するモデルで動作するアプリの作成方法は、現状不明です。詳細はこちら。開発環境[]各開発環境の環境構築や使い方などの詳細については、それぞれのリンク先の記事を...

記号・日本語の入力方法

Brain にはキーボードがありますが、辞書を引くための最低限のキーしか搭載されておらず、数字や記号を入力することができません。また、IME が搭載されていないため辞書アプリ外では日本語入力もできませ...

第5世代

第5世代機の発売日当日、突如として Brain Library に現れたポップアップ。多くの憶測を呼んだ。2021 年、例年より少し遅れて、見た目は PW-Sx7 とほぼ何の違いもない PW-S1, ...

第4世代

この世代では、PW-SB5 以降の大学生・ビジネス向けモデル (PW-SB 系) を除く機種に非公式アプリの起動プロテクトが掛かるようになりました。また、PW-Sx7 ではさらに強化したプロテクトが導...

第3世代

対象型番[]発売時期中学生高校生学校専売大学生ビジネス生活·教養シニアその他2014年前半SJ1SH1HC4SB1SA12014年後半SR12015年前半SJ2SH2HC5SB2SA22015年後半2...

第2世代

対象型番[]発売時期中学生高校生学校専売大学生ビジネス生活·教養シニアその他2012年前半G4200G5200HC2A9200A72002012年後半A7300GX5002013年前半G5300HC3...

第1世代

対象型番[]発売時期中学生高校生学校専売大学生ビジネス生活·教養シニアその他2008年後半AC880AC830TC9802009年前半GC590AC8902009年後半AC9002010年前半GC61...

倉庫番

Warehouse Guy プレイ画面グループゲーム開発者True DimensionsDLLmfcce211.dll1982 年に PC-8801 向けにリリースされて以降、30 年以上に渡って遊ば...

リンク集

Brain 用ソフトウェア開発者[]KnatechceOpener、KN PDF Reader など。川本優Task Switcher など。ソースコードはこちらで配布されています。lycorisON...

リバーシ

かつてはブレーンライブラリーで追加コンテンツとして「リバーシ」が販売されていましたが、削除されてしまいました。しかし、まだフリーソフトでリバーシを遊ぶことができます。目次1 Reversi1.1 操作...

ユーティリティ

便利ツール-0.pngソフト名解説備考Garmap CE(直リンク)オフライン地図アプリです。MioPocket の System に入れ、AYGSHELL.DLL を CE5 からコピーします。別途...

メガドライブエミュレータ

1988 年に当時のセガ・エンタープライゼスより発売された、据え置き型家庭用ゲーム機メガドライブのエミュレータの解説です。自由な利用と頒布が許諾されていない ROM のダウンロードは著作権侵害により罰...

ミニッツマスコット

ミニッツマスコット デフォルトのキャラクターは「耳長メイドのらんぷさん」グループユーティリティ利用用途デスクトップマスコット開発者上野智弘DLL不要デスクトップ常駐型のキャラクター表示アプリといえば、...