☆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]
を参考にさせて頂きました。
| 固定リンク
