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 件のコメント:
コメントを投稿