objective-cをちょい研究!ブログ -21ページ目

objective-cをちょい研究!ブログ

WILLCOMを卒業してiOS開発者に転身しました。。
コメント&トラックバック大歓迎です。

■Eメール表示
以下のレジストリに未読件数が保存されているので、数値が増えたかどうかをタイマーで監視しています。
HKEY_CURRENT_USER\Software\Sharp\STMail\Accounts\アカウント名\NoRead


数値が増えた場合は、W-ZERO3メールのデータを読みに行ってます。
http://ameblo.jp/willcom-phs/entry-10088452273.html


このソフトの小窓ですが、非アクティブになったとき消してます。ところがEメール受信完了時に表示されるダイアログメッセージで小窓が非アクティブになってしまう。そこで、GetForegroundWindowでフォーカスウインドウを取得して、フォーカスを奪ったウインドウタイトルが「Eメール(ウィルコム)」のときだけフォーカスを奪い返すようにしました。


■アカウント設定
オンラインサインアップすると自局番号がアカウント名になるので、自局番号をデフォルトのアカウント名にしました。自局番号の取得は、ATコマンドを使うと若干時間がかかるので、以下のレジストリから取得しました。SIMを差替えた直後は自局番号表示するまで設定が変わらないんですが、その辺は気にしないことに(^^;
HKEY_CURRENT_USER\Software\Sharp\ShPhoneLib\MyPhoneNumber


W-ZERO3メールの設定でアカウント名を変更しても、Eメールデータが保存されるフォルダ名(アカウント名が含まれる)は変更されないようです。ソフトではアカウント名だけ設定すればいいようにしたかったんですが、保存先フォルダ名を取得する方法がわからなかったんで手動入力できるようにしました。


■連絡先の登録名表示
参照のMicrosoft.WindowsMobile.PocketOutlookを使いました。
情報の取得だけなら意外と簡単に出来ました。


Dim os As New OutlookSession
WmGetPhoneName = ""


'一致するデータを全件取得(telNo=参照したい電話番号)
Dim cs As ContactCollection = os.Contacts.Items.Restrict( _
  "[MobileTelephoneNumber] = """ & telNo & """ OR " & _

  "[HomeTelephoneNumber] = """ & telNo & """")


'一致するデータのうち最初の名前を取得
If cs.Count <> 0 Then
  For Each c As Contact In cs
    WmGetPhoneName = c.FileAs
    Exit For
  Next
End If
※インデントに全角スペースを使ってます。コピペ時は半角に変換して下さい。


テクニカルノート19: Pocket Outlook ファイルへアクセス
http://www.nsbasic.com/ce/Japanese/support/TechNotes/TN19.htm


POOM(らくがきさん) Pocket Outlookを利用するC#のソースを参考にさせてもらいました。

http://www.wildtree.jp/~araki/rakugaki/2006/02/poom.html


■縦横切替
画面の縦横切替時に、Resizeイベントが降ってくるんですが、このツールの小窓のようにサイズを固定(全画面でない)にしているとResizeイベントが降ってこないようです。小窓表示時は位置調整に対応しましたが、小窓表示中に縦横切替場合の方法は調査中です。

W-ZERO3メールの起動パラメータを調べてみた。


きっかけは、パラメータに-aを指定すると指定したアカウントで起動できるらしいって記事を見つけて。
http://d.hatena.ne.jp/solipt/20080124/1201113002

http://d.hatena.ne.jp/lark-andante/20080123/1201081601

Ad[es]用 未読メールがあるアカウントで W-ZERO3メールを起動する MortScript version 0.1.0.0(Andanteさん)


もしかしたら他にも起動パラメータがあるんじゃないかってことで、W-ZERO3メールをバイナリエディタで開いて、パラメータっぽいのをピックアップしてみた。


-setadress "送信先アドレス"
指定すると、送信先アドレスで手書きメール作成画面が開いた


-attach "ファイル名"
ファイルが添付された状態でメール作成画面が開いた
mailtoと併用しないとうまくいかないっぽい

例)STMail mailto:~ -attach "\1.txt"


-i
-attachと併用して指定すると、手書きメールの画像として開いた

例)STMail mailto:~ -attach "\1.jpg" -i


-t
不明。テキストかテンプレートあたりかと思ったけど、まったく変化は見られず

※定期受信(バックグラウンド)だそうです。(thanks hideさん)


-receiveWmail
メールを受信しに行った


-a "アカウント名"
指定したアカウントでZERO3メールが起動する。
ZERO3メールが起動中に指定する場合、時間がかかるせいか、すぐに非アクティブにすると失敗した。



ついでに引数だけを表示するプログラムを作ってSTMail.exeを上書きしてみた。

エクスプローラを使うとROMファイルの上書きエラーが出るので、GSFinderを使用。

エクスプローラからのファイル送信と、連絡先からメール作成をしてみたが、上記のとおりでとくに新しい発見はなし。

WILLCOM03に機種変したときのために、アドエスに入れてるソフトの覚書です。


■常駐ソフト


ctrlswapmini

テンキー入力支援。トグル入力・小文字切替できる。

http://hp.vector.co.jp/authors/VA004474/wince/soft3.html#ctrlswapmini


File Dialog Changer

標準のファイルダイアログ拡張。全フォルダにアクセスできる。

File Explore Extension
エクスプローラ拡張。ショートカット作成やパス名コピーできる。

http://www.geocities.co.jp/SiliconValley-Cupertino/2039/


tdLaunch4SE[es]

Todayにショートカットを置ける。

http://www25.big.or.jp/~hidea/mobile/tdlaunch.php


■エディタ・プレイヤ


○号テキストエディタ

テキストエディタ

http://www.fermes-soft.com/zhe_download.htm


TRE

レジストリエディタ

http://www2r.biglobe.ne.jp/~tascal/download/pocketpc/tre.htm


GSFinder+ for HTC Universal

エクスプローラの多機能版みたいなソフト。

http://www.geocities.jp/gsfinder_wm5/


TCPMP V0.72

多形式の音楽・ムービー再生ソフト。

http://blogs.shintak.info/articles/TCPMP.aspx


GSPlayer

音楽再生ソフト。MIDIプラグイン追加でMIDI再生。

http://hp.vector.co.jp/authors/VA032810/


■ツール


片手間電卓

テンキーだけで使える。

http://www.lares.dti.ne.jp/~youma/air_edge/onehandcalc.html

ドコモの場合、ベーシックコースとバリューコースでは明らかにバリューコースが得だけど、auの場合新シンプルコースの登場でフルサポートコースとどっちが得なのか非常にわかりにくくなった。


どっちが得なのか計算してみた。


・基本料とEZwebに加入した場合。
・新シンプルコースは21000円端末代割増で計算。
・プランS~LLの新シンプルコースは一律840円の割引。


 プランSS(シンプル):(980円+315円)×24ヶ月+21000円=52080円
 プランSS(フルサポ):(1890円+315円)×24ヶ月=52920円


 プランS(シンプル):(1627円+315円)×24ヶ月+21000円=67608円
 プランS(フルサポ):(2467円+315円)×24ヶ月=
66768円


プランSSなら新シンプルコース、それ以外ならフルサポートコースが得である。



ちなみにフルサポート期間中でも解除料を払うと新シンプルコースに移行できるそうだ。→au Q&A


・フルサポで購入して2ヶ月目に解除料を払ってシンプルに移行した場合。


 プランSS:(1890円+315円)+(980円+315円)×23ヶ月+18900円=50890円
 プランS :(2467円+315円)+(1627円+315円)×23ヶ月+18900円=
66348円


フルサポート解除料を払ってシンプルに移行した場合が一番安くなった。



auポイントプログラムを考慮してみる。


・新シンプルコースは105円につき2ポイント
・フルサポートコースは105円につき4ポイント(金額により4~7%)


 プランSS(シンプル):(980円+315円)×2%×24ヶ月=576P
 プランSS(フルサポ):(1890円+315円)×4%×24ヶ月=2016P


 プランS(シンプル):(1627円+315円)×2%×24ヶ月=864P
 プランS(フルサポ):(2467円+315円)×4%×24ヶ月=2496P


1P=1円換算で計算すると


 プランSS(シンプル):52080円-576P=51504円
 プランSS(フルサポ):52920円-2016P=
50904円


 プランS(シンプル):67608円-864P=66744円
 プランS(フルサポ):66768円-2496P=
64272円


いずれもフルサポートの方が安くなった。



家電量販店で端末を現金一括で購入した場合。


大体10%のポイントが付与されるが、ポイントで購入してもポイントが付かないので実質9.09%の付与として計算。auポイントも量販店で使うとポイントが付かないので、90.9%の価値として計算。


 シンプル端末割増分の量販店ポイント:21000円×9.09%=1908円相当


 プランSS(シンプル):52080円-576P×90.9%-1908円=49648円
 プランSS(フルサポ):52920円-2016P×90.9%=51087円


 プランS(シンプル):67608円-864P×90.9%-1908円=64914円
 プランS(フルサポ):66768円-2496P×90.9%=
64499円


この場合も、プランSSなら新シンプルコース、それ以外ならフルサポートコースが得である。


ちなみにフルサポートで購入して1ヶ月でシンプルに移行した場合。
フルサポート解除料にポイントを充当できるので等価で計算。


 プランSS:50890円-636P=50254円
 プランS :66348円-932P=65416円


いずれのプランでも一番安くはならなかった。


非常に微妙な結果に…
プランSSで通話もパケットもあまり使わないなら新シンプルで購入、それ以外ならフルサポが得って事でしょうか。

GSPlayerのMIDIプラグインを使ってMIDI再生できるアプリ開発用のDLLです。


【概要】

GSPlayerのMIDIプラグインは、MIDIファイルをWAVEデータに変換してGSPlayer本体に渡すという処理をしていました。実際の再生はGSPlayer本体で行っています。
そこで、このMIDIプラグインを使ってWAVEデータを再生できるDLLファイルを作ってみました。

何ができるかって言うと、GSPlayerとMIDIプラグインがインストールされていれば、ZERO3でMIDIを再生するアプリケーションの開発ができるようにしました。


【バージョンアップ】

・プラグイン初期化関数の成否の戻り値追加

・MIDIファイルクローズ関数追加

・VB用のClassヘッダーファイル作成


【ダウンロード】

DLLとLIBファイル、C++用ヘッダ、VB用ヘッダです。

DLLのC++ソースも同梱してます。
http://www.ne.jp/asahi/phs/phs/blog/gspmidiplay102.lzh


※DLLのソースをビルドするには、mapplugin.hファイルが必要です。GSPlayerMIDIプラグインの公開ソース から入手して下さい。

★Zero3プログラムランキング★

↑↑やる気アップになりますので投票お願いします↑↑


【使い方】


C++プログラムで使う場合


1.ライブラリ(GspMidiPlay.lib)とヘッダー(gsPlay.h)をC++ソースと同じフォルダにコピーします。
2.ライブラリの参照設定します。

 ソリューションエクスプローラのプロジェクトを右クリック
 プロパティ→構成プロパティ→リンカ→入力
 [追加の依存ファイル]欄に下記を貼り付け

 GspMidiPlay.lib


VBプログラムで使う場合


1.GspMidiPlay.vbをVBソースと同じフォルダにコピーしてプロジェクトに追加します。

2.GspMidiPlay.dllを自作したEXEファイルと同じフォルダにコピーします。


【関数一覧】
今のところ次の関数に対応しました。

int GSMidiInit();    //プラグイン初期化 0=成功/-1=失敗
void GSMidiClose(); //プラグイン開放

void GSMidiOpenFile(LPWSTR fileName); //MIDIファイルオープン
void GSMidiCloseFile();  //MIDIファイルクローズ
void GSMidiPlay();  //再生
void GSMidiPause(); //一時停止
void GSMidiStop();  //停止


LIBを使ったサンプルソースです(C++)
Windowsフォルダにある運命.midを再生します。
http://www.ne.jp/asahi/phs/phs/blog/gsplayermiditest5.lzh

長いソースになってますが、ほとんどはデフォルトで生成されたものです。

追加箇所は、「//***追加 by APO」で検索してみてください。


【関連参考】

GSPlayerのインストールはここが参考になります。
http://blog.livedoor.jp/cat49660/archives/50052947.html
GSPlayer+MIDI(W-ZERO3) (W-ZERO3(アドエス)でフリーソフト!!さん)

デバイス本体にインストールしてください。