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

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

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

DDIポケット時代のテレネームが忘れられなくてこんなもの作ってみました。

今のところ技術的な問題も山積なので公開する予定はありませんが(^^;


どういうソフトかって言うと、電話がかかってきたら前回受信したライトメールを表示するだけのソフトです。

今で言う、ドコモの着もじ、古いものならIDOの挨拶型プチメールみたいなものです。

ただ、ドコモの着もじは10文字しか使えないのに有料ってのがいまいち。DDIポケットにもPメール継続通話ってのもあったけど、通話してからじゃないと見れなかったし。やっぱりメール無料のウィルコムにこそこんなサービスをやってほしいところ。


イメージ的にはこんな感じです。

PHSを2台持ってないので、携帯の番号になってますが…。

着メッセージ


ソフトの原理はこんな感じです。


タイマーでレジストリのLockPhoneを監視。65537なら着信中である。

HKEY_CURRENT_USER\Software\Sharp\PhoneApp


着信中なら、メッセージ用のフォームを最前面表示にして電話アプリの上にかぶせる。


ライトメール本文はレジストリのLightMailDataに最後に受信したメールが残っているのでここから拝借。

HKEY_CURRENT_USER\Software\Sharp\ShPhoneLib


引き続きLockPhoneを監視して、65537以外ならメッセージ用フォームを隠す。

待受け中=0

通話中=262145

発信中=131073

終話画面=1048577


問題は、現在着信中の番号がわからないので、ライトメールを表示するかどうかの判定ができないこと。これが一番の問題だったり・・・

レジストリに電話番号をセットして、電話アプリにメッセージを送ってあげると発信画面を表示できた。


(1)レジストリに電話番号をセットする。
HKEY_CURRENT_USER\Software\Sharp\PhoneApp
tel 電話番号


(2)FindWindowで"電話 "を検索して、電話アプリにメッセージを送る。
  WParamは何でもよいみたい。
USER+257 WParam=&h501 LParam=0


電話発信画面が表示された。ただ、シェルで tel:070XXXX を実行するのとなんら変わりないかも。


ちなみに、電話帳から電話をかけると以下レジストリもセットされるみたい。
name  名前
oid  電話帳ID


手動で名前を変更してみたが電話帳名が表示されたので、レジストリ値に関係なく電話帳を見に行っているみたい。


ついでにライトメールの場合。

(1)レジストリに電話番号をセットする。
HKEY_CURRENT_USER\Software\Sharp\PhoneApp
LightMail 電話番号


(2)FindWindowで"ライトメール "を検索して、ライトメールアプリにメッセージを送る。
  WParamは何でもよいみたい。
USER+4098 WPARAM=&h1402 LParam=0


ライトメール作成画面に電話番号が入力された状態で表示された。本文を渡せないので、こちらも使い道はなさそう。

電話履歴データを調べてみました。
電話の発着信とライトメール発着信履歴はwindowsフォルダにdatファイルとして保存されています。

編集して上書きすると、次に履歴を表示したときにすぐ反映されました。


■発信履歴 Callinghistory.dat
テキスト形式のタブ区切りでデータが格納されています。数字データはすべて0~9のアスキーコードです。


電話番号<TAB>
発信時間<TAB>
 YYYYMMDDHHmm
電話帳ID?<TAB>
 電話帳に登録されていると何らかの番号が入る
表示される名前<TAB>
番号種別アイコン<TAB>
 0=PHS/1=携帯/2=会社/5=家/10=その他
発信区分アイコン<改行>
 0=無/1=184/2=186/3=分計/4=分計(184)/5=分計(186)/9=内線


編集して上書きしてみた結果

(履歴07番のデータ)

070000000000<TAB>200904010207<TAB>0000000000<TAB>名前A<TAB>0<TAB>0
発信履歴


■着信履歴 Calledhistory.dat
テキスト形式のタブ区切りでデータが格納されています。数字データはすべて0~9のアスキーコードです。


電話番号<TAB>
通知理由<TAB>
 0=通知/1=通知不可能/2=ユーザー非通知/3=公衆電話
着信時間<TAB>
 YYYYMMDDHHmm
電話帳ID?<TAB>
表示される名前<TAB>
番号区分アイコン<TAB>
 0=PHS/1=携帯/2=会社/5=家/10=その他
着信区分アイコン<改行>
 0=不在着信/1=留守録/2=着信


編集して上書きしてみた結果

着信履歴


■ライトメール発信 lmailsendhistory.dat
テキスト形式のタブ区切りでデータが格納されています。数字データはすべてバイナリです。


電話番号<TAB>
表示される名前<TAB>
発信時間<TAB>
 YYYYMMDDHHmm
発信区分アイコン<TAB>
 0=無/1=184/2=186
不明(\0\0\0\0)<改行>


■ライトメール着信 lmailrecvhistory.dat
テキスト形式のタブ区切りでデータが格納されています。数字データはすべてバイナリです。


電話番号<TAB>
表示される名前<TAB>
着信時間<TAB>
 YYYYMMDDHHmm
通知理由<TAB>
 \0=通知/\1=通知不可能/\2=ユーザー非通知/\3=公衆電話
不明(\0\0\0\0)<TAB>
メール番号(nn nn) 不明(\0\0)<改行>
 ライトメール履歴ファイルと同じ番号が入る

XPとVistaでファイル共有設定したんだけど、XPからVistaは見れるのに逆ができない。
PINGを試したが、XPにPINGが通らない。
ネットで調べてみると、ファイアウォールがONになっているとだめらしいので、OFFにしたがやっぱりだめ。XPのSP2を入れているので、念のためファイアウォールの設定でICMPがらみを全部ONにしてみたがそれでもだめ。
あと思い当たるのはマカフィを入れているのでそれくらい。マカフィのファイアフォールはOFFにしているんだけど、念のためプログラムの追加と削除でマカフィのファイアーフォールを削除してみることにした。


削除して再起動したらうまくいった~\(^0^)/。こんなことで半日も無駄使い。設定OFFにしてたのに、何で機能してたんだろう…(怒)

パソコン買い換えました(^^)v

今まで2000年ごろに買ったMeをXPにバージョンアップしたものを使っていて、そこそこ不自由なく使ってました。が、Zero3プログラミングをするべく、今年始めごろにVisual Studio 2005を入れてから状況が一遍。遅くてストレスたまりまくりでした(>_<)


買ったパソコンは、OS Vista、 CPU Core 2 Duo E8200、メモリ 2GB、HDD 250GB。

まだ買って半日ですが、速度は快適。XPと操作性が違うので慣れるまでいらいらしそうですが。


肝心のVisual Studioは、インストールに1度失敗したものの、Vista用のサービスパックを当てることで無事インストール完了。前のパソコンではシュミレータが遅すぎて使い物にならなかったので一回一回Zero3に転送して動作確認してたんですが、新しいパソコンでは今のところサクサク!!今後はシュミレータでデバッグできるのがうれしい。