OutlookExpressをプログラムから扱うメモ2
昨日までで、アカウント情報のインスタンスと、GetPropの時のプロパティID(DWORD)は分かったけど、取得時にエラーが出る原因はいまいち分からない。ということで原因究明と実データの取得をしてみたい今日この頃。うまくいけばもっと自動化してみたいな、と。
いろいろ試してみてたけど、昨日からの検証で取得してたプロパティID(DWORD)が正しくなかった模様。ループで回してHRESULT=S_OKな物を取得したんだけど、何かが違ったらしい。で、ショッキングなことに、VBから使えるMSOE操作のソースみたいなのを発見。(ここ:http://files.codes-sources.com/fichier.aspx?id=33575&f=CWMailAccounts.cls)Google先生で、IImnAccountの一単語だけで検索すると出てきた。でもVS.Net2003にソースコピーすると一筋縄じゃ使えないなぁ。
とりあえず、この中でプロパティのIDを計算してるところを自前で計算して、VC++でやってみると、確かに設定データが取得できた。だけど、何でループの時に出てこなかったんだろう。はぁ。まあ、OEを自動化するための情報収集ができたからよしとするか・・・
というわけで、プロパティID(DWORD)の一覧
305464304 サーバ名(アカウントの名前?) 305988592 アカウントID 312280041 IMAPポート番号 312411113 IMAPタイムアウト時間 312345589 IMAPセキュア接続を使うかどうか(IMAPS) 311952368 IMAPサーバ名 312017904 IMAPユーザID 312083446 IMAPパスワード 331613168 POP3サーバ名 331678704 POP3ユーザID 331744246 POP3パスワード 331940841 POP3ポート番号 332006389 POP3セキュア接続を使うかどうか(POP3S) 332071913 POP3タイムアウト時間 332137461 メールをサーバに残すかどうか 332202997 RemoveWhenDeleted(だけどよく分からないし、設定情報取れなかった) 332268533 RemoveWhenExpired(同上) 338166768 SMTPサーバ名 338232310 SMTPユーザID(受信と同じ設定を使う、だと取れないかも) 338297846 SMTPパスワード(同上) 338494441 SMTPポート番号 338559989 SMTPセキュア接続を使うかどうか(SMTPS) 338625513 SMTPタイムアウト時間 338691056 メール送信時に表示する送信者名 338822128 メール送信時に表示するメールアドレス
プロパティ取得関数の使い方
HRESULT = pAccount->GetProp((DWORD)<プロパティID>, (BYTE)pByte, (ULONG)pLength); HRESULT = pAccount->GetPropSz((DWORD)<プロパティID>, (DWORD)pDword); HRESULT = pAccount->GetPropDw((DWORD)<プロパティID>, (LPSTR)pChar, (ULONG)pCharLength); ※pCharLengthには、元々確保したpCharの配列長を与える