2007-07-29
Windows Mobile
我が家には開発用として提供いただいたWindows Mobileマシンがあるんです。そうW-ZERO3[es]です。
![]()
私とWinodws CEとの出会いはかなり古く、カシオからWindows CE 1.0 日本語版を搭載したハンドヘルドPCが発売される前に、USで発売されていた英語版の頃です。何故か仕事で、「お前が調査しろ」ということになって、新宿のヨドバシまでカシオペア (Cassiopeia)を買いに行きました。6~7万円くらいだったかな?
まだ、ESをあまり使いこなせていないんですが、少し気合いをいれてかかろうかと…
でもって、Windows Mobile 5/6の開発環境を一式インストール完了。ちょろっとアプリを作ってエミュレータで実行。やっぱ少し癖はありますが、以前と比べると開発環境も整備されています。エミュレータ上からちゃんとインターネットも見れるし。

とりあえず何はともあれ「通信からだな」ということで、wininet APIを使ったものを作成しました。
しかし、エミュレータで実行するとInternetOpenがエラーになる。何故? ドキュメントを見てもOS Versionsには、「Windows CE 2.0 and later.」と書いてあるし…。Windows Mobile 6のエミュレータでも同じ。実機でも同じ。パラメータをいろいろ変更してみても全然ダメ。GetLastErrorで詳細を表示するしかないかと、MessageBoxを使ってエラーを表示すると、こんなエラーになっています。

Windows MobileではWininet APIは使えない? だとしたら何故コンパイルが通る? WinSockを使うしかないのか? いろいろ考えてみてもよくわかりません。
HTTP通信できないと、どうにもならない(そんなことは無い)ので、ドキュメントでも調べてみることにします。
【追記】
原因がわかったので追記しておきます。
・InternetOpenにユーザーエージェントを指定しないと失敗する(NULLはダメ)
・アクセスタイプにINTERNET_OPEN_TYPE_DIRECT以外を指定してもInternetOpenは成功するが、取得したHINTERNETをInternetOpenUrlに指定すると失敗する(私の環境だけ?)
・GetLastErrorは信用できない(w
やっと通信できるようになりました。










楽天
アマゾン







