ページ

2009年07月08日

clog.dbが作れない

最近何も作ってなかったので、Spb Mobile Shellで着信履歴を表示できないか調べています。

Spb Mobile Shellはdummy phone.dllを使うことで電話の発信ができるようになりますが、着信履歴を表示することはできません。 (ちなみに Pointui Home2は dummy phone.dllだけで着信履歴も表示可能でした)

Spb Mobile Shellは発着信履歴を clog.dbから直接読んでいるのだろうと考えて、直接着信履歴書き込むプログラムを作ってみました。
clog.dbの構造は一部わからないところもあるのですが、エミュレータ(Professioanl版)では正しく動いてくれました。

Classic版には clog.dbが無いので、自分で作ることにします。
#define COLUMN_1 MAKELONG(CEVT_I2 , 1) // ? 1固定?
#define COLUMN_STARTTTIME MAKELONG(CEVT_FILETIME , 2) // 開始時刻
#define COLUMN_ENDTIME MAKELONG(CEVT_FILETIME , 3) // 終了時刻
#define COLUMN_CALLTYPE MAKELONG(CEVT_I4 , 4) // 4=不在着信, 5=発信, 6=着信, 7=拒否
 // 5は?
#define COLUMN_PHONENUMBER MAKELONG(CEVT_LPWSTR , 6) // 番号
#define COLUMN_DISPNAME MAKELONG(CEVT_LPWSTR , 7) // 表示名
 // 8は?
#define COLUMN_7 MAKELONG(CEVT_I4 , 9) // ? 0固定?
#define COLUMN_PHONETYPE MAKELONG(CEVT_LPWSTR , 10) // 番号区分(文字列)
#define COLUMN_8 MAKELONG(102 , 4096) // ? 本当は CEVT_AUTO_I4, 4096
static CEOID CreateClogDB(PCEGUID pGuid)
{
 CEDBASEINFOEX dbInfo = {0};
 CEPROPSPEC dbProp[9] = {0};
 dbInfo.wVersion = 2;
 //dbInfo.wNumSortOrder = 2;
 dbInfo.wNumSortOrder = 0;
 dbInfo.dwFlags = CEDB_VALIDCREATE;
 wcscpy(dbInfo.szDbaseName, _T("clog.db"));
 dbProp[0].wVersion = 1;
 dbProp[0].propid = COLUMN_1;
 dbProp[0].dwFlags = NULL;
 dbProp[1].wVersion = 1;
 dbProp[1].propid = COLUMN_STARTTTIME;
 dbProp[1].dwFlags = NULL;
 dbProp[2].wVersion = 1;
 dbProp[2].propid = COLUMN_ENDTIME;
 dbProp[2].dwFlags = NULL;
 dbProp[3].wVersion = 1;
 dbProp[3].propid = COLUMN_CALLTYPE;
 dbProp[3].dwFlags = NULL;
 dbProp[4].wVersion = 1;
 dbProp[4].propid = COLUMN_PHONENUMBER;
 dbProp[4].dwFlags = NULL;
 dbProp[5].wVersion = 1;
 dbProp[5].propid = COLUMN_DISPNAME;
 dbProp[5].dwFlags = NULL;
 dbProp[6].wVersion = 1;
 dbProp[6].propid = COLUMN_7;
 dbProp[6].dwFlags = NULL;
 dbProp[7].wVersion = 1;
 dbProp[7].propid = COLUMN_PHONETYPE;
 dbProp[7].dwFlags = NULL;
 dbProp[8].wVersion = 1;
 dbProp[8].propid = COLUMN_8;
 dbProp[8].dwFlags = NULL;
 return CeCreateDatabaseWithProps(pGuid, &dbInfo, 9, dbProp);
}

こんな感じでデータベースはできたのですが、いくらデータを書いても肝心の着信履歴に表示されません。
いろいろ試してみると Professional版でもこの方法で clog.dbを作ると着信履歴が保存されないようです。 (最初に電話をかけると正しい clog.dbが作られる?)

ちょっとした違いなんだろうと思いますが、違いを見つけることができませんでした。
空のclog.dbを作るようなツールがあるといいんですけどね。

0 件のコメント:

コメントを投稿

AltStyle によって変換されたページ (->オリジナル) /