ももらぼっ!にっき


2002年10月23日

_ DOS/V Magazine。

ちっちゃなソフトの収録だけだったのに、ちゃんと雑誌を献本していただいた。ってことで、早速中を見てみた。CD-ROM onlyの収録かと思ったら、ひとことだけどアイコン付きで紹介文が載ってたのが嬉しい。

・・・。

とはいえ、根本的な疑問なんだけど。最近この手の雑誌のソフト紹介って活用されてるのかねぇ?昔、インターネットに繋ぐ環境が整ってなかった頃は、雑誌についてるフリーソフトはありがたいものだったんだけど。ベクターから出てた、10枚組みCD-ROMがついてるようなソフトウェア集は重宝したなぁ(遠ヒ目)

_ ツッコミ返し。

藤代さん>予定調和なツッコミさんくす。

そうそ。

今日*1は今から帰るんで、あずまんが見れないかな〜、でもきっと見るんだろーなー、といったところ。目標としては今週中全話消化なんだけど、間に合うかなぁ。。。

*1 10/22 25:50 (T-T)

本日のツッコミ(全2件) [ツッコミを入れる]

_ 藤代千尋 [DOS/V Magazine 見るだけは見てみました。あの顔半分。いい味ですねぇ。(^^;)]

_ 藤代千尋 [私もソフト紹介の雑誌を前は買ってました。重宝もしていました。が、もう買ってませんねぇ。ソフト1つひとつの扱いも小さか..]


2006年10月23日

_ [WM5][W-ZERO3] caltβテストに募集された方で…。

まだ、私からのメールを受け取っていない方はいらっしゃいますか?

こちらからは漏れなく送信させてもらったツモリなのですが、 何かの手違いでメールが届いていなかったらいやだなぁ、と思いまして。 たまーに、infoで始まるメールは全てスパムメール扱いにしていて、 私からのメールを拒否る人がいましてね。 気になったので、一応にっき上で聞いてみました。

もしメールを受け取ってない方がいらっしゃいましたら、お手数ですが再度ご連絡いただければと思います。

以上、業務報告でしたm(_ _)m

あ、募集は引き続き行っておりますよ!

_ [WM5] pim.volのデータベースを直接参照する。

caltでは、pim.volのデータベースを直接参照して予定情報を取得しています。 具体的にはEDBというデータベースエンジン(?)のAPIを使って、以下のようにソースを書いています。

CEGUID guid;
CeMountDBVolEx(&guid, _T("pim.vol"), NULL, OPEN_EXISTING);

で、データベースをマウントして、

HANDLE session = CeCreateSession(&guid);

で、セッションを作成して

SORTORDERSPECEX sos;
ZeroMemory(&sos, sizeof(SORTORDERSPECEX));
sos.wVersion = SORTORDERSPECEX_VERSION;
sos.wNumProps = 1;
sos.wKeyFlags = 0;
sos.rgPropID[0] = 0x10420040; //開始時間
sos.rgdwFlags[0] = 0;

で、ソートキーを指定して

CEOID ceoid;
HANDLE hdb = CeOpenDatabaseInSession(&session,
  &guid,
  &ceoid,
  _T("Appointments Database"),
  &sos,
  0,
  NULL);

で、データベースを開いて、

CEPROPID prgPropID[] = {
  0x10420040, //開始時間
  0x0020001f  //件名
};
WORD wNum = 2; //取得するプロパティ数
CEPROPVAL *lpPropVal;
DWORD cbBuffer = 0;
HANDLE hHeap = HeapCreate(HEAP_GENERATE_EXCEPTIONS, 2048, 0);
CEOID ceoid = CeReadRecordPropsEx(&hdb,
  CEDB_ALLOWREALLOC,
  &wNum,
  prgPropID,
  (LPBYTE *)&lpPropVal,
  &cbBuffer,
  hHeap);

で、プロパティを取得します。

あ、ヒープの開放やハンドルの開放などなどの後始末はココに書いてませんので、 これをこのまんま使わないでくださいね。 メモリリークしまくってしまいます。 caltで使っている(後始末をちゃんとしている)ソースが見たい人は、websvnにでもアクセスしてみてください。 今の最新ほやほやのソースが見られますので。

で、ここからが本題。

予定データをEDBでアクセスするには、プロパティIDというもの(上記ソース上、0x10420040とか書かれてたヤツ)が必要です。IDそれ自身はCeGetDatabasePropsというAPIで取得できるのですが、それぞれのIDの意味が全然わかりません。 手探りで調べてみて、解析できたのが以下の通り。

0x10000066( 0):ULONG   ID(?)
0x200f0012( 1):USHORT  修正回数
0x001e0064( 2):stream  
0x0028000b( 3):BOOL    アラーム
0x0029001f( 4):文字    
0x00460013( 5):ULONG   アラームの時間
0x002a0013( 6):ULONG   
0x10400013( 7):ULONG   開始時間から終了時間までの差(分)
0x0041001f( 8):文字    場所
0x203f0064( 9):stream  
0x0022000b(10):BOOL    繰返し予定
0x10420040(11):日付    開始時間
0x0044000b(12):BOOL    終日予定
0x00450013(13):ULONG   予定の公開方法(0〜3)
0x00210013(14):ULONG   秘密度(0〜3)
0x0020001f(15):文字    件名
0x0061000b(16):BOOL    
0x00480041(17):BLOB    
0x205f0064(18):stream  
0x00500013(19):ULONG   
0x0051001f(20):文字    
0x00530040(21):日付    
0x00470041(22):BLOB    
0x00520040(23):日付    作成時間
0x10430040(24):日付    
0x001b0013(25):ULONG   

まぁ、備忘録ということで解析結果のメモを残しておきます。 続きを解析してやろうとかいう酔狂な方がいれば、手持ちのデータは提供しますですよ。(って上記内容でほぼ打ち止めですけどorz)

本日のツッコミ(全3件) [ツッコミを入れる]

_ Offisnail [こんにちは〜EDB解析頑張ってますね〜 詳しく見てませんがpimsotore.hの#define PIMR_XXXX..]

_ Offisnail [0x10000066( 0):ULONG PIMPR_OID 0x200f0012( 1):USHORT ?修..]

_ ももたろ [おぉー。 どうせヘッダになんて書いてないだろうと決め付けて、そっちの方向からの調査はまったくしてませんでした。 この..]