☆TOutlookApplicationを使ってみる。
一応取得できるんですが、次のような問題があります。
1.パスワードが設定されている場合、パスワード入力ダイアログが表示される。
2.「アクセスを許可する時間」とかいうダイアログが出てきます。
1.については、Outlookが起動済みの場合は、NameSpace1.Logonにパスワードを設定すれば問題ないのですが、起動していない場合にはエラーになります。
2.については、Zaurusのリンクソフトでは表示されないので、何か方法があるはずだと思うのですが、Windowを監視してメッセージでボタンを押すぐらいのことしか思いつきませんでした。
※私の環境は、Delphi2006、Windows XP Pro SP2、Office XP Personalです。 又、このプログラムを会社のWindows XP Pro SP2、Office2003という環境でも試してみましたが、きちんと動作しました。
フォームに、OutlookApplication1、NameSpace1、Items1、Items2、Memo1を配置します。
uses DateUtils; procedure TForm1.Button1Click(Sender: TObject); var Appo: AppointmentItem; MF: MAPIFolder; Filter, S1, S2, S3, S4: String; SDate, EDate: TDateTime; begin OutlookApplication1.Connect; try NameSpace1.ConnectTo(OutlookApplication1.GetNamespace('MAPI')); // OutLookが起動しているときには、次の処理は正常に動作しますが、 // 起動していないときには、エラーになります。なんで?? // パスワードが設定されている場合 // NameSpace1.Logon('個人用フォルダ', pw, False, False); NameSpace1.Logon('', '', False, False); try MF := NameSpace1.GetDefaultFolder(olFolderCalendar); if Assigned(MF) then begin Items1.ConnectTo(MF.Items); Items1.Sort('[START]', OleVariant(False)); Items1.IncludeRecurrences := WordBool(True); // 検索開始日 SDate := IncDay(Now, -3); // 検索終了日 EDate := IncDay(Now, 90); // フィルター文字列の作成 Filter := '([Start] > "' + FormatDateTime('yyyy/mm/dd hh:nn',SDate) + '") and ([Start] < "' + FormatDateTime('yyyy/mm/dd hh:nn',EDate) + '")'; // フィルター処理後のアポイントメントを設定します。 Items2.ConnectTo(Items1.Restrict(Filter)); // 先頭からnilになるまで、順番に取得していきます。 Appo := (Items2.GetFirst as _AppointmentItem); Memo1.Lines.Clear; Memo1.Lines.BeginUpdate; try while Appo <> nil do begin S1 := FormatDateTime('yyyy/mm/dd hh:nn', Appo.Start); S2 := FormatDateTime('yyyy/mm/dd hh:nn', Appo.End_); S3 := Appo.Subject; S4 := Appo.Body; Memo1.Lines.Add(Concat(S1,#9,S2,#9,S3,#9,S4)); Appo := (Items2.GetNext as _AppointmentItem); end; finally Memo1.Lines.EndUpdate; end; end; finally NameSpace1.Logoff; end; finally // OutlookApplication1.Quit; ←Outlookが起動していた場合、閉じてしまう。 OutlookApplication1.Disconnect; end; end;
borland.public.delphi.oleautomationの
Re: Problems with reading outlook calander
Darren Guy [Apr 22 2004, 16:37]
を参考にさせて頂きました。
| 固定リンク