<開発者向け> Microsoft Office Outlook 2007 の新機能 (1/2)
Randy Byrne, Program Manager
Microsoft Corporation
May 2006
適用対象:
Microsoft Office Outlook 2007
要約: この記事では、Microsoft Office Outlook 2007 の開発者向け拡張機能および追加機能に関する概要を説明します。また、Outlook のオブジェクト モデルの新規および拡張オブジェクトの一部と、それらのプロパティ、メソッド、およびイベントについて詳しく説明します。この記事には、What's New Add-Ins が付属しています。What's New Add-Ins は、Microsoft ダウンロード センターからダウンロードできます。Outlook プラットフォームについての事前資料が必要な場合には、この記事とアドインで Outlook 2007 のコーディングを開始する際の詳細情報を得ることができます。
Outlook2007WhatsNewAddin.msi をダウンロードする。
Outlook2007WhatsNewAddin.msi サンプル ファイルをダウンロードする。(サイズ未定)
Outlook2007WhatsNewAddin
MSDNSamples\Office2003
目次
はじめに
Outlook オブジェクト モデルの拡張と追加
What's New Add-Ins
フォーム領域
セキュリティ
まとめ
その他の参考資料
はじめに
Microsoft Office Outlook 2007 では新たに、オブジェクト モデルやフォーム テクノロジにおける大幅な向上が図られています。これは、開発者の要望に応え、Outlook ベースのソリューションに対するより包括的なプラットフォームを提供するためです。拡張された Outlook 2007 の特長は、次のとおりです。
- 統合。Microsoft Collaboration Data Objects (CDO) 1.21、Microsoft Exchange Client Extensions、またはその他のサード パーティ製ライブラリに依存せずにソリューションを完成できるようになります。CDO 1.21 などの API は、マネージ ソリューション用にサポートされません。Outlook オブジェクト モデルが、Microsoft .NET の開発用に完全にサポートされます。
- パフォーマンス。フォルダの内容を列挙したり、検索操作を実行したりする際に、他の API を使用する必要がなくなります。
- 信頼性とセキュリティ。Outlook のオブジェクト モデルが、電子メールを媒体としたワームやウイルスの感染手段として使用されないようにします。
- フォーム。アプリケーションのカスタマイズやフォームの展開がより柔軟に行えるようになり、より充実した最新のユーザー インターフェイスがサポートされます。
- 革新。検索、タスクのフラグ設定、カテゴリごとの色分け、カレンダーの並列配置、Outlook オブジェクト モデルの共有などの Outlook の新機能を、プログラムを使用して組み込めるようになります。
Outlook 2007 のオブジェクト モデルには 85 を超える新しいオブジェクトが含まれており、オブジェクト モデルのサイズは 2 倍以上になっています。この記事では、すべての新しいオブジェクトではなく、いくつかの重要な機能を中心に説明します。リボン拡張機能 (RibbonX)、フォーム領域、セキュリティなどの詳細については、MSDN で参照可能なその他の記事で説明します。
Outlook オブジェクト モデルの拡張と追加
以前のバージョンの Outlook では、ソリューションを完成させるために他の API を使用しなければならないことがしばしばありました。Outlook 2007 では、CDO 1.21 などの API と、Exchange Client Extensions や Extended MAPI のパーツが Outlook オブジェクト モデルに統合されます。この統合を実現するため、Outlook 2007 のオブジェクト モデルには 85 を超える新しいオブジェクトが含まれています。
こうした統合は、Outlook の開発者にとってなぜ重要なのでしょうか。開発者の仕事は、仕様に従ってソリューションのビジネス ロジックを実装することです。パフォーマンス、安定性、セキュリティなど、その他の重要な要素にも注意を払います。開発作業を最も効率的かつタイムリに完成させることのできるプラットフォームも探します。以前のバージョンの Outlook では、途中でいくつかの障害にぶつかることがありました。Outlook 2007 で実現されるプラットフォームへの投資により、作業がより簡単になり、難しい Outlook のオブジェクト モデルに多くの時間を費やすことなく、整然とコーディングされたソリューションの作成に集中できるようになります。統合された Outlook のオブジェクト モデルは、Outlook の開発におけるほとんどのニーズを満たします。Outlook のオブジェクト モデルは、ネイティブ開発者およびマネージ コード開発者向けに完全にサポートされています。次バージョンの Microsoft Visual Studio Tools for the Microsoft Office System (Visual Studio Tools for Office) では、Outlook 2007 上に構築されるプロフェッショナルなソリューションを作成するための完全な開発環境が提供されます。
下記の表は、メンバが追加されて拡張された既存のオブジェクト、およびオブジェクト モデルに追加された新しいオブジェクトとコレクションを示しています。これらのオブジェクトやメンバのほとんどは、Beta 2 リリースの Outlook 2007 に既存のものです。オブジェクト ブラウザでこれらが存在することを確認してください。
既存オブジェクトの拡張
表 1 は、以前のバージョンの Outlook で使用可能であったオブジェクトおよびコレクションの拡張を示しています。"拡張" の列には、新しいメソッド、プロパティ、およびイベントのみを示してあります。
表 1. Outlook のオブジェクトおよびコレクションの拡張
オブジェクト | 拡張 |
---|---|
AddressEntry オブジェクト | メソッド GetContact、GetExchangeDistributionList、GetExchangeUser プロパティ |
AddressList オブジェクト | メソッド GetContactsFolder プロパティ |
Application オブジェクト | メソッド GetObjectReference プロパティ イベント |
AppointmentItem オブジェクト | プロパティ EndTimeZone、EndUTC、ForceUpdateToAllAttendees、GlobalAppointmentID、PropertyAccessor、SendUsingAccount、StartTimeZone、StartUTC イベント |
Attachment オブジェクト | プロパティ BlockLevel、PropertyAccessor、Size |
ContactItem オブジェクト | メソッド AddBusinessCardLogoPicture、ClearTaskFlag、ForwardAsBusinessCard、MarkAsTask、ResetBusinessCard、SaveBusinessCardImage、ShowBusinessCardEditor、ShowCheckPhoneDialog プロパティ イベント |
DistListItem オブジェクト | メソッド ClearTaskFlag、MarkAsTask プロパティ イベント |
DocumentItem オブジェクト | プロパティ PropertyAccessor イベント |
Explorer オブジェクト | メソッド ClearSearch、Search プロパティ |
Folder オブジェクト (以前のバージョンの Outlook の MAPIFolder オブジェクトは、このオブジェクトに置き換わります。今後すべてのアプリケーションでは、Folder オブジェクトを使用してください。) | メソッド GetCalendarExporter、GetStorage、GetTable プロパティ イベント |
Inspector オブジェクト | メソッド NewFormRegion、OpenFormRegion、SaveFormRegion イベント |
JournalItem オブジェクト | プロパティ PropertyAccessor イベント |
MailItem オブジェクト | メソッド AddBusinessCard、ClearTaskFlag、MarkAsTask プロパティ イベント |
MeetingItem オブジェクト | プロパティ PropertyAccessor イベント |
Namespace オブジェクト | メソッド CompareEntryIDs、CreateSharingItem、GetAddressEntryFromID、GetGlobalAddressList、GetSelectNamesDialog、GetStoreFromID、OpenSharedFolder、OpenSharedItem、SendAndReceive プロパティ |
NoteItem オブジェクト | プロパティ PropertyAccessor |
PostItem オブジェクト | オブジェクト ClearTaskFlag、MarkAsTask プロパティ イベント |
Recipient オブジェクト | プロパティ PropertyAccessor |
RemoteItem オブジェクト | プロパティ PropertyAccessor イベント |
ReportItem オブジェクト | プロパティ PropertyAccessor イベント |
Search オブジェクト | メソッド GetTable |
TaskItem オブジェクト | プロパティ PropertyAccessor、SendUsingAccount、ToDoTaskOrdinal イベント |
TaskRequestAcceptItem オブジェクト | プロパティ PropertyAccessor イベント |
TaskRequestDeclineItem オブジェクト | プロパティ PropertyAccessor イベント |
TaskRequestItem オブジェクト | プロパティ PropertyAccessor イベント |
TaskRequestUpdateItem オブジェクト | プロパティ PropertyAccessor イベント |
View オブジェクト | プロパティ Filter |
新しいオブジェクトとコレクション
表 2 は、Outlook 2007 で導入された新しいオブジェクト、コレクション、およびインターフェイスを示しています。すべてのオブジェクト メンバを "メソッド、プロパティ、およびイベント" の列に示してあります。
表 2. Outlook 2007 で導入された新しいオブジェクト、コレクション、およびインターフェイス
オブジェクト、コレクション、またはインターフェイス | メソッド、プロパティ、およびイベント |
---|---|
Account オブジェクト | プロパティ AccountType、Application、Class、DisplayName、Parent、Session、SmtpAddress、UserName |
AccountRuleCondition オブジェクト | プロパティ Account、Application、Class、ConditionType、Enabled、Parent、Session |
Accounts コレクション | メソッド Item プロパティ |
AddressRuleCondition オブジェクト | プロパティ Address、Application、Class、ConditionType、Enabled、Parent、Session |
AssignToCategoryRuleAction オブジェクト | プロパティ ActionType、Application、Categories、Class、Enabled、Parent、Session |
AttachmentSelection オブジェクト | メソッド Item プロパティ |
AutoFormatRule オブジェクト | プロパティ Application、Class、Enabled、Filter、Font、Name、Parent、Session、Standard |
AutoFormatRules コレクション | メソッド Add、Insert、Item、Remove、RemoveAll、Save プロパティ |
BusinessCardView オブジェクト | メソッド Apply、Copy、Delete、GoToDate、Reset、Save プロパティ |
CalendarModule オブジェクト | プロパティ Application、Class、Name、NavigationGroups、NavigationModuleType、Parent、Position、Session、Visible |
CalendarSharing オブジェクト | メソッド ForwardAsICal、SaveAsICal プロパティ |
CalendarView オブジェクト | メソッド Apply、Copy、Delete、GoToDate、Reset、Save プロパティ |
CardView オブジェクト | メソッド Apply、Copy、Delete、GoToDate、Reset、Save プロパティ |
Categories コレクション | メソッド Add、Item、Remove プロパティ |
Category オブジェクト | プロパティ Application、CategoryID、Class、Color、Name、Parent、Session、ShortcutKey |
CategoryRuleCondition オブジェクト | プロパティ Application、Categories、Class、ConditionType、Enabled、Parent、Session |
Column オブジェクト | プロパティ Application、Class、Name、Parent、Session |
ColumnFormat オブジェクト | プロパティ Align、Application、Class、FieldFormat、FieldType、Label、Parent、Session、Width |
Columns コレクション | メソッド Add、Item、Remove、RemoveAll プロパティ |
ContactsModule オブジェクト | プロパティ Application、Class、Name、NavigationGroups、NavigationModuleType、Parent、Position、Session、Visible |
ExchangeDistributionList オブジェクト | メソッド Delete、Details、GetContact、GetExchangeDistributionList、GetExchangeDistributionListMembers、GetExchangeUser、GetFreeBusy、GetMemberOfList、GetMembers、GetOwners、Update プロパティ |
ExchangeUser オブジェクト | メソッド Delete、Details、GetContact、GetDirectReports、GetExchangeDistributionList、GetExchangeUser、GetExchangeUserManager、GetFreeBusy、GetMemberOfList、Update プロパティ |
FormNameRuleCondition オブジェクト | プロパティ Application、Class、ConditionType、Enabled、FormName、Parent、Session |
FormRegion オブジェクト | メソッド Reflow、Select、SetItemControlProperty プロパティ イベント |
FormRegionStartup インターフェイス | メソッド BeforeFormRegionStartup、GetFormRegionStorage |
FromRssFeedRuleCondition オブジェクト | プロパティ Application、Class、ConditionType、Enabled、FromRssFeed、Parent、Session |
IconView オブジェクト | メソッド Apply、Copy、Delete、GoToDate、Reset、Save プロパティ |
ImportanceRuleCondition オブジェクト | プロパティ Application、Class、ConditionType、Enabled、Importance、Parent、Session |
JournalModule オブジェクト | プロパティ Application、Class、Name、NavigationGroups、NavigationModuleType、Parent、Position、Session、Visible |
MailModule オブジェクト | プロパティ Application、Class、Name、NavigationGroups、NavigationModuleType、Parent、Position、Session、Visible |
MarkAsTaskRuleAction オブジェクト | プロパティ ActionType、Application、Class、Enabled、FlagTo、MarkInterval、Parent、Session |
MoveOrCopyRuleAction オブジェクト | プロパティ ActionType、Application、Class、Enabled、Folder、Parent、Session |
NavigationFolder オブジェクト | プロパティ Application、Class、DisplayName、Folder、IsRemovable、IsSelected、IsSideBySide、Parent、Position、Session |
NavigationFolders コレクション | メソッド Add、Item、Remove プロパティ |
NavigationGroup オブジェクト | プロパティ Application、Class、GroupType、Name、NavigationFolders、Parent、Position、Session |
NavigationGroups コレクション | メソッド Create、Delete、GetDefaultNavigationGroups、Item プロパティ イベント |
NavigationModule オブジェクト | プロパティ Application、Class、Name、NavigationModuleType、Parent、Position、Session、Visible |
NavigationModules コレクション | メソッド GetNavigationModule、Item プロパティ |
NavigationPane オブジェクト | プロパティ Application、Class、CurrentModule、DisplayedModuleCount、IsCollapsed、Modules、Parent、Session イベント |
NewItemAlertRuleAction オブジェクト | プロパティ ActionType、Application、Class、Enabled、Parent、Session、Text |
NotesModule オブジェクト | プロパティ Application、Class、Name、NavigationGroups、NavigationModuleType、Parent、Position、Session、Visible |
OlkBusinessCardControl オブジェクト | プロパティ MouseIcon、MousePointer イベント |
OlkCategory オブジェクト | プロパティ AutoSize、BackColor、BackStyle、Enabled、ForeColor、MouseIcon、MousePointer、TextAlign イベント |
OlkCheckBox オブジェクト | プロパティ Accelerator、Alignment、BackColor、BackStyle、Caption、Enabled、Font、ForeColor、MouseIcon、MousePointer、TripleState、Value、WordWrap イベント |
OlkComboBox オブジェクト | メソッド AddItem、Clear、Copy、Cut、DropDown、GetItem、Paste、RemoveItem、SetItem プロパティ イベント |
OlkCommandButton オブジェクト | プロパティ Accelerator、AutoSize、Caption、Enabled、Font、MouseIcon、MousePointer、Picture、TextAlign、WordWrap イベント |
OlkContactPhoto オブジェクト | プロパティ Enabled、MouseIcon、MousePointer イベント |
OlkDateControl オブジェクト | メソッド DropDown プロパティ イベント |
OlkFrameHeader オブジェクト | プロパティ Alignment、Caption、Enabled、Font、ForeColor、MouseIcon、MousePointer |
OlkInfoBarオブジェクト | プロパティ MouseIcon、MousePointer イベント |
OlkLabel オブジェクト | プロパティ Accelerator、AutoSize、BackColor、BackStyle、BorderStyle、Caption、Enabled、Font、ForeColor、MouseIcon、MousePointer、TextAlign、UseHeaderColor、WordWrap イベント |
OlkListBox オブジェクト | メソッド AddItem、Clear、Copy、GetItem、GetSelected、RemoveItem、SetItem、SetSelected プロパティ イベント |
OlkOptionButton オブジェクト | プロパティ Accelerator、Alignment、BackColor、BackStyle、Caption、Enabled, Font、ForeColor、GroupName、MouseIcon、MousePointer、Value、WordWrap イベント |
OlkPageControl オブジェクト | プロパティ Page |
OlkSenderPhoto オブジェクト | プロパティ Enabled、MouseIcon、MousePointer、PreferredHeight、PreferredWidth イベント |
OlkTextBox オブジェクト | メソッド Clear、Copy、Cut、Paste プロパティ イベント |
OlkTimeControl オブジェクト | メソッド DropDown プロパティ イベント |
OrderField オブジェクト | プロパティ Application、Class、ColumnFormat、IsDescending、Parent、Session、ViewXMLSchemaName |
OrderFields コレクション | メソッド Add、Insert、Item、Remove、RemoveAll プロパティ |
PlaySoundRuleAction オブジェクト | プロパティ ActionType、Application、Class、Enabled、FilePath、Parent、Session |
PropertyAccessor オブジェクト | メソッド BinaryToString、DeleteProperties、DeleteProperty、GetProperties、GetProperty、LocalTimeToUTC、SetProperties、SetProperty、StringToBinary、UTCToLocalTime プロパティ |
Row オブジェクト | メソッド BinaryToString、GetValues、Item、LocalTimeToUTC、UTCToLocalTime プロパティ |
Rule オブジェクト | メソッド Execute プロパティ |
RuleAction オブジェクト | プロパティ ActionType、Application、Class、Enabled、Parent、Session |
RuleActions コレクション | メソッド Item プロパティ |
RuleCondition オブジェクト | プロパティ Application、Class、ConditionType、Enabled、Parent、Session |
RuleConditions コレクション | メソッド Item プロパティ |
Rules コレクション | メソッド Create、Item、Remove、Save プロパティ |
SelectNamesDialog オブジェクト | メソッド Display、SetDefaultDisplayMode プロパティ |
SenderInAddressListRuleCondition オブジェクト | プロパティ AddressList、Application、Class、ConditionType、Enabled、Parent、Session |
SendRuleAction オブジェクト | プロパティ ActionType、Application、Class、Enabled、Parent、Recipients、Session |
SharingItem オブジェクト (基本クラス MailItem に追加されたメンバ、または基本クラス MailItem とは異なるメンバのみリスト) | メソッド Allow、Deny、Forward、OpenSharedFolder、Send プロパティ |
StorageItem オブジェクト | メソッド Delete、Save プロパティ |
Store オブジェクト | メソッド GetRootFolder、GetRules、GetSearchFolders、GetSpecialFolder プロパティ |
Stores コレクション | メソッド Item プロパティ イベント |
Table オブジェクト | メソッド FindNextRow、FindRow、GetArray、GetNextRow、GetRowCount、MoveToStart、Restrict、Sort プロパティ |
TableView オブジェクト | メソッド Apply、Copy、Delete、GoToDate、Reset、Save プロパティ |
TasksModule オブジェクト | プロパティ Application、Class、Name、NavigationGroups、NavigationModuleType、Parent、Position、Session、Visible |
TextRuleCondition オブジェクト | プロパティ Application、Class、ConditionType、Enabled、Parent、Session、Text |
TimelineView オブジェクト | メソッド Apply、Copy、Delete、GoToDate、Reset、Save プロパティ |
TimeZone オブジェクト | プロパティ Application、Bias、Class、DaylightBias、DaylightDate、DaylightDesignation、Index、Name、Parent、Session、StandardBias、StandardDate、StandardDesignation |
TimeZones オブジェクト | メソッド ConvertTime、Item プロパティ |
ToOrFromRuleCondition オブジェクト | プロパティ Application、Class、ConditionType、Enabled、Parent、Recipients、Session |
UserDefinedProperties オブジェクト | メソッド Add、Find、Item、Refresh、Remove プロパティ |
UserDefinedProperty オブジェクト | メソッド Delete プロパティ |
ViewField オブジェクト | プロパティ Application、Class、ColumnFormat、Parent、PropertyName、Session |
ViewFields コレクション | メソッド Add、Insert、Item、Remove プロパティ |
ViewFont オブジェクト | プロパティ Application、Bold、Class、Color、Italic、Name、Parent、Session、Size、Strikethrough、Underline |
What's New Add-Ins
この記事には、ダウンロード可能なアドインが付属しています。アドインは、2 つの言語による 2 つのバージョンのものが作成されています。Microsoft Visual C# と Microsoft Visual Basic .NET です。アドインを実行するには、Microsoft Visual Studio 2005 および Microsoft Office Outlook 2007 Beta 2 以降が必要になります。
この記事の第 2 部には、What's New Add-Ins のコード サンプルが掲載されています。アドインは、Outlook 2007 のオブジェクト モデルのいくつかの重要な新機能について理解するために役立つラーニング ツールです。オブジェクト モデルの新機能は、1 つのサンプルでは網羅しきれないほど多くあるので、アドインでは次のような重要な新機能を対象としています。
- ショートカット メニューのカスタマイズ。
- Table オブジェクト モデルと簡易検索クエリ。
- Outlook オブジェクト モデルで明示的に公開されていないプロパティの取得または設定を可能にする PropertyAccessor オブジェクト。
- Outlook 自動仕訳ウィザードでサポートされているほとんどのルールを、プログラムを使用して作成またはアクセスできるようにする Rules オブジェクト モデル。
- Outlook アドレス帳を表示し、ダイアログ ボックスのキャプションや受信者の選択方法をカスタマイズできるようにする SelectNamesDialog オブジェクト。
- AddressEntry オブジェクトおよび AddressList オブジェクトの拡張。これらの拡張には ExchangeUser オブジェクトおよび ExchangeDistributionList オブジェクトも含まれますが、この 2 つのオブジェクトは、Exchange ユーザーまたは Exchange 配布リストのプロパティの取得および設定を可能にします。
What's New Add-Ins に加えて、Rules Add-In、Prepare Me Add-In、Travel Agency Add-In などの、MSDN で間もなく公開予定のその他の Outlook アドインでは、オブジェクト モデルのさまざまな新機能とアプリケーションとの連係方法を示すコード例も多数提供されます。
**注: **Visual C# Express Edition または Visual Basic Express Edition を使用してサンプル アドインを開く場合は、セットアップ/配置プロジェクトを構築したり、サンプル アドインをインストールしたりできません。
インストールの手順
- Outlook2007WhatsNewAddin.msi をダウンロードしてハード ディスクに保存します。
- Outlook2007WhatsNewAddin.msi をダブルクリックしてセットアップ プログラムを開始します。
- 画面の指示に従ってインストールを完了します。
**注: **各サンプル ソリューションは、ソリューション フォルダおよびサブフォルダに含まれています。サンプル ソリューション名のサフィックスにより、サンプルで使用される言語を識別できます。Visual Basic .NET のサンプルのサフィックスは VB で、C# のサンプルのサフィックスは CS です。たとえば、WhatsNewAddinVB フォルダには Visual Basic .NET バージョンが存在し、WhatsNewAddinCS フォルダには C# バージョンが存在します。
サンプル アドインを実行する
このサンプルの実行方法は、次のとおりです。
Outlook 2007 を閉じます。
WhatsNewAddinVB または WhatsNewAddinCS のいずれかの <ソリューション名> のソリューションを開きます。これらのソリューションは、マイ ドキュメント\Visual Studio 2005\Projects\<ソリューション名> フォルダに存在します。
ソリューション エクスプローラで、<ソリューション名> Setup を選択します。
[ビルド] メニューの [<ソリューション名> Setup のビルド] をクリックします。
ビルド プロセスが完了したら、[プロジェクト] メニューを開いて、[インストール] をクリックし、ソリューションをインストールします。
Outlook を起動してアドインを "実行" モードで起動するか、F5 キーを押してアドインを "デバッグ" モードで起動します。
Outlook が "デバッグ" モードで開かないときは、ソリューション エクスプローラを開いて <ソリューション名> を選択します。次に、[プロジェクト] メニューの [<ソリューション名> のプロパティ] をクリックし、[デバック] タブをクリックして、[開始動作] の [外部プログラムの開始] オプションをクリックします。[...] ボタンをクリックしてフォルダを参照し、次のフォルダの Outlook.exe を選択します。
<ドライブ>:\Program Files\Microsoft Office\Office12
フォーム領域
フォーム領域は、以前のバージョンの Outlook では不可能であった方法で組み込みアイテムとカスタム アイテムをカスタマイズできるようにします。ユーザー インターフェイスの観点から、フォーム領域は、拡張性を備えた Outlook プラットフォームに対する最も重要でエキサイティングな追加機能です。フォーム領域では、インスペクタや閲覧ウィンドウに表示可能な Outlook の標準フォームに、カスタム ユーザー インターフェイスを追加できます。以前のバージョンの Outlook では、閲覧ウィンドウのカスタマイズや Outlook の標準フォームへのユーザー インターフェイス機能の追加は困難または不可能でした。Outlook 2007 のフォーム領域では、これらの過去の制限の解消を図っています。この記事では、フォーム領域については詳しく説明しませんが、『Outlook Developer Reference』(英語) に詳細情報が記載されています。
フォーム領域によって実現可能なことを簡単にまとめると、次のようになります。
- Outlook の標準フォームのカスタマイズ、または派生メッセージ クラスの新しいフォームの作成。
- インスペクタや閲覧ウィンドウでのフォーム領域の表示。
- フォーム領域での Outlook 2007 の新しいコントロールの使用。フォーム領域のすべてのコントロールは、Microsoft Windows のテーマに沿ったものであり、外観が新しくなっています。Outlook 2007 のコントロールは、MouseUp、MouseDown、KeyPress など、すべての種類のコントロール イベントもサポートしています。Outlook 2007 には、次のものが備わっています。
- 日付と時刻のコントロール
- ページ コントロール。予定アイテムのスケジュール ページおよびトラッキング ページを含みます。
- 電子名刺コントロール
- 連絡先および送信者の写真コントロール
- カテゴリ コントロール
- チェック ボックス、コンボ ボックス、コマンド ボタン、ラベル、リスト ボックス、オプション ボタン、およびテキスト ボックス コントロール
- 情報バー コントロール
Travel Agency Sample Add-In
フォーム領域について考えるにあたり、図 1 と 2 にフォーム領域の機能と柔軟性を示しました。これらは、Travel Agency Add-In のスクリーン ショットです。Travel Agency Add-In は、間もなく Microsoft ダウンロード センターからダウンロード可能になります。全体のシナリオとしては、旅行代理店が個人の連絡先アイテムに旅程を保存しています。これらの旅程は、XML 形式の旅程などの隠し添付ファイルとして連絡先アイテムに保存されています。そのため、旅程は、オンラインとオフラインの両方で使用可能であり、ユーザーはどこからでも参照できます。
図 1. Contoso Travel Information は、閲覧ウィンドウまたはインスペクタに表示される隣接フォーム領域です (クリックするとイメージが拡大されます)。
図 1 は、閲覧ウィンドウ内の隣接フォーム領域を示しています。隣接フォーム領域は、Outlook のインスペクタ、または Outlook エクスプローラ ウィンドウの閲覧ウィンドウに表示できます。この場合、フォーム領域は、受信メッセージがビュー内で選択されているときにのみ表示されます。隣接フォーム領域 Contoso Travel Information は、メッセージ クラスが IPM.Note であるアイテムに対して登録されています。メッセージの送信者が [連絡先] フォルダに存在しないため、隣接フォーム領域または特定のメッセージを表示したくない場合は、プログラムを使用し、必要に応じてフォーム領域を非表示にしたり表示したりできます。
図 2. 特定の連絡先の旅程を別のフォーム領域に表示 (クリックするとイメージが拡大されます)
図 2 は、Outlook の標準の連絡先フォームの [Itineraries] ページを示しています。以前のバージョンの Outlook のカスタム フォームとは異なり、[メッセージ]、[予定]、[連絡先] など、Outlook のあらゆる標準フォームにフォーム領域を関連付けることができます。また、フォーム領域は、IPM.Contact.TravelAgency などの、派生メッセージ クラス用のカスタム フォームにも使用できます。Travel Agency Add-In の場合、フォーム領域は既定の連絡先アイテムである IPM.Contact に対して登録されています。
別のフォーム領域には、カスタム アイコンを関連付けることもできます。フォーム領域の XML にアイコンを含めると、リボンの [表示] グループにカスタム アイコンが自動的に表示され、ユーザーは別のフォーム領域に移動できるようになります。
図 2 に示されているフォーム領域のもう 1 つの重要な機能は、電子名刺コントロールの使用です。このコントロールは、設計時にフォーム領域に配置されます。ユーザーが何もしなくても、コントロールに連絡先の正確な情報が入力されます。以前のバージョンの Outlook のカスタム フォームとは異なり、フォーム領域ではカスタマイズの結果が Outlook のユーザー インターフェイスの統合コンポーネントとして表示されます。
FormRegionStartup インターフェイス
フォーム領域を作成するには、FormRegionStartup インターフェイスをアドインに実装する必要があります。FormRegionStartup は、アドインが記憶域やフォーム領域のユーザー インターフェイスを指定できるようにしたり、そのフォーム領域用のオブジェクトを取得したり、フォームまたは閲覧ウィンドウにフォーム領域がいつ表示されるようにするかを決定したりするインターフェイスです。FormRegionStartup オブジェクトは、抽象型クラスです。つまり、このオブジェクトを直接インスタンス化することはできません。
クライアント コンピュータの Outlook フォームでフォーム領域を展開するアドインは、FormRegionStartup インターフェイスを実装する必要があります。FormRegionStartup は、BeforeFormRegionShow と GetFormRegionStorage の2 つのメソッドから構成されています。Outlook がアドインを読み込むとき、Outlook は IDTExtensibility2 インターフェイスに FormRegionStartup を照会します。
このアドインは、GetFormRegionStorage 内のフォーム領域用の記憶域とレイアウト ファイルを示します。GetFormRegionStorage が呼び出されると、Outlook は記憶域を割り当て、フォーム領域のレイアウトを計算し、フォーム領域のオブジェクトをインスタンス化します。そして、アドインに割り当てられる記憶域を示す値を戻します。GetFormRegionStorage が成功すると、インスペクタ ウィンドウまたは閲覧ウィンドウにフォーム領域が表示される前に、Outlook は BeforeFormRegionShow を呼び出して、フォーム領域の FormRegion オブジェクトをアドインに渡します。アドインは、フォーム領域が表示される前に、その時点でフォーム領域のコントロールを更新したり、フォーム領域の表示を設定したりします。
アドインは、フォーム領域のフレームを閉じる際に、フォーム領域のオブジェクトを解放する必要があります。
FormRegionStartup を実装する、C# および Visual Basic .NET のアドインの例については、MSDN で間もなく公開予定の「Building an Outlook 2007 Form Region with a Managed Add-in」(英語) というタイトルの記事を参照してください。
セキュリティ
Outlook 2007 では、Outlook オブジェクト モデル ガードの動作方法に重要な変更が加えられました。Outlook のアドインでは、オブジェクト モデル ガードの動作に大幅な変更はありませんが、Outlook 2007 では、オブジェクト モデル ガードのプロンプトが表示されることなく外部アプリケーションを実行できます。ただし、それが可能なのは、コードが実行されているコンピュータに正常に機能するウイルス対策ソフトウェアがインストールされていて、すべてのウイルス定義が最新の状態になっている場合に限ります。
この変更は、外部のアウトプロセスの COM 呼び出し元に対する以前のバージョンのオブジェクト モデル ガードの動作方法からの大きな脱却を表しています。Outlook 2007 の前は、外部の COM 呼び出し元は、常にオブジェクト モデル ガードから信頼されていませんでした。つまり、外部アプリケーションは、図 3 に示すような Outlook 2007 のオブジェクト モデル ガードによる警告の表示を防ぐために、拡張 MAPI またはサード パーティのライブラリを使用する必要がありました。
図 3. Outlook のアドレス帳の警告
オブジェクト モデル ガードは、Microsoft Outlook 98 と Microsoft Outlook 2000 で始めて導入されました。そして、オブジェクト モデル ガードが導入されて以来、正当な外部 COM アプリケーションやそのユーザーに対してアドレス帳で表示される警告の多さは、開発者がフラストレーションを感じる原因となっていました。また、MAPI プロパティのアクセスまたはパフォーマンスの向上を実現するために CDO を使用する必要があった場合は、Outlook のアドイン信頼モデルに統合されていない、異なるセキュリティ モデルに直面することになりました。Outlook 2007 では、ほとんどのアプリケーションに対して CDO が必要なくなりました。Outlook 2007 でのセキュリティの向上は、Outlook のすべての正当な開発者にとっての開発時の障害を取り除くために役立ちます。以降のセクションでは、Outlook 2007 の Outlook オブジェクト モデル ガードの動作について説明します。
アドインと Outlook のオブジェクト モデル ガード
アドインの動作については、Microsoft Outlook 2003 からの大きな変更はありませんが、既定以外のセキュリティ設定を保存するためのグループ ポリシー オブジェクト (GPO) が Outlook 2007 で新たに導入されました。アドインおよび Outlook オブジェクト モデル ガードの動作は、次のとおりです。
- すべてのアドインは、既定で信頼されています。つまり、Outlook で既定の設定が使用される場合、アドインの OnConnection イベントで渡される Application オブジェクトは、信頼されたオブジェクトとして Outlook オブジェクト モデルにアクセスできます。Visual Studio Tools for Office を使用してアドインを作成している場合、組み込みの Application オブジェクトも信頼されます。信頼された Application オブジェクトから派生したすべてのオブジェクトも信頼されます。信頼された Application オブジェクトから派生していない Outlook の Application オブジェクトを作成しようとする場合、そのオブジェクトおよびそのオブジェクトから派生するすべてのオブジェクトは、オブジェクト モデル ガードにより信頼されませんので、注意が必要です。
- ユーザーが Microsoft Exchange Server に接続されている企業での設定の場合は、IT 管理者がクライアント コンピュータ上の AdminSecurityMode キーを修正し、指定したアドインの一覧のみが Outlook で信頼され、オブジェクト モデル ガードに対しては既定以外の設定が適用されるようにできます。
- AdminSecurityMode キーが設定されている場合は、次のいずれかの処理が実行されます。
- Outlook で、特定のアドインが信頼され、特定のオブジェクト モデル ガードの設定が適用されるように、Exchange のパブリック フォルダ内の Outlook セキュリティ フォームがチェックされます。
- Outlook で、特定のアドインが信頼され、特定のオブジェクト モデル ガードの設定が適用されるように、GPO がチェックされます。
アウトプロセスの呼び出し元と Outlook のオブジェクト モデル ガード
アウトプロセスの呼び出し元に対する動作は、Outlook 2003 から大幅に変更されました。クライアント コンピュータにウイルス対策ソフトウェアがインストールされ、最新の状態になっている場合、Outlook では、MailItem.Send や MailItem.Recipients などのプロテクト メンバを呼び出すときに、オブジェクト モデル ガードの警告ダイアログが表示されません。
次の条件を満たす場合、アウトプロセスの COM 呼び出し元とアドインはすべて、セキュリティ関連のプロンプトが表示されることなく実行されます。
- クライアント コンピュータで Microsoft Windows XP SP2 または Microsoft Windows Vista が実行されており、Windows セキュリティ センターが、ウイルス対策ソフトウェアが正常に動作していることを示している。コンピュータがドメインに参加している場合、動作状態は示されませんが、動作は継続しています。
- インストール済みのウイルス対策ソフトウェアが Windows XP SP2 または Windows Vista 用のものである。
- Outlook が次のいずれかの方法で構成されている。
- 既定のセキュリティ設定を使用。
- グループ ポリシーを使用。セキュリティ設定が定義済みであり、ウイルス対策ソフトウェアが何も検出されないときに警告するように設定されている場合。
- グループ ポリシーを使用。セキュリティ設定が定義済みであるが、プログラムのアクセス ポリシーが適用されない場合。
さらに、図 4 に示すとおり、[セキュリティ センター] ダイアログ ボックスでプロンプトの構成が [不審な動作に関する警告を表示しない(推奨しません)] となっている場合、Outlook ではプロンプトが表示されません。
図 4. Outlook セキュリティ センターを使用した、プログラムのアクセスの制御 (クリックするとイメージが拡大されます)
これらの条件は、Outlook が起動するたびにチェックされます。さらに、Outlook では、ウイルス対策設定の変更をチェックするための変更通知も使用されます。コンピュータが以前に定義されていた安全な状態から逸脱してしまうような変更が検出された場合、オブジェクトモデル ガードのプロンプトが有効になり、状況が修正されるまでシステムは信頼されていると見なされません。Outlook で、これらの条件が再び満たされていることを示すような変化が検出された場合は、オブジェクト モデル ガードのプロンプトは表示されなくなります。
管理者は、Outlook セキュリティ GPO、または Exchange Server のパブリック フォルダ内の Outlook セキュリティ フォームを使用して、オブジェクト モデルの警告ダイアログ機能を有効にしたり、保護されたオブジェクト モデルのメンバへのオブジェクト モデルのアクセスを無効にしたりできます。
Outlook 2007 のオブジェクト モデルのセキュリティの詳細については、MSDN で公開されている記事「Code Security Changes in Outlook 2007」(英語) を参照してください。
まとめ
2 部構成の第 1 部に当たるこの記事では、Microsoft Office Outlook 2007 で開発者向けに拡張および追加された機能について概要を説明しました。拡張された Outlook オブジェクト モデルについては、この記事の第 2 部を参照してください。<開発者向け> Microsoft Office Outlook 2007 の新機能 (2/2)