You are previewing Programming Applications for Microsoft® Office Outlook® 2007.
O'Reilly logo
Programming Applications for Microsoft® Office Outlook® 2007

Book Description

Get the comprehensive reference for extending Microsoft Office Outlook 2007. Many knowledge workers rely on Office Outlook to help them structure their days managing e-mail messages, calendars, contacts, and tasks. Now, with new extensibility features in Office Outlook 2007, developers can create add-ins that allow data from other tools and applications to be hosted within Outlook 2007. By gathering more information together in one application and one so familiar users can experience increased levels of productivity. This complete guide shows developers how to exploit the new features in Office Outlook 2007 to extend, adapt, and customize information flow to the desktop. Includes code samples in Microsoft Visual Basic® and Microsoft Visual C#®.

Delivers authoritative platform guidance to inform developers when add-in and form customizations are appropriate.

Provides add-in templates and extensive code samples in Visual Basic and Visual C# (with additional information about Visual C++).

Features end-to-end sample applications.

Visit the catalog page for Programming Applications for Microsoft® Office Outlook® 2007Visit the errata page for Programming Applications for Microsoft® Office Outlook® 2007Download the supplemental electronic content for Programming Applications for Microsoft® Office Outlook® 2007

Table of Contents

  1. Programming Applications for Microsoft® Office Outlook® 2007
  2. A Note Regarding Supplemental Files
  3. Foreword
  4. Acknowledgments
  5. Introduction
    1. Why We Wrote This Book
    2. Who This Book Is For
    3. How This Book Is Organized
      1. Part I: Introducing Microsoft Office Outlook 2007
      2. Part II: Quick Guide to Building Solutions
      3. Part III: Working with Outlook Data
      4. Part IV: Providing a User Interface for Your Solution
      5. Part V: Advanced Topics
    4. Sample Code on the Web
      1. Code Snippets
    5. Building the Sample Add-Ins
    6. System Requirements
    7. Support for This Book
  6. I. Introducing Microsoft Office Outlook 2007
    1. 1. What’s New in Microsoft Office Outlook 2007
      1. Form Regions
      2. Security
      3. Table Object
      4. Improved Search
      5. Enhanced Events
      6. AddressEntry Enhancements
        1. SelectNamesDialog Object
        2. ExchangeUser and ExchangeDistributionList Objects
      7. Sharing Objects
      8. Rules Objects
      9. PropertyAccessor Object
        1. PropertyAccessor Sample Code
      10. Developer Reference
      11. Summary
    2. 2. Outlook as a Platform
      1. Why Integrate with Outlook?
      2. Different Types of Outlook Integration
        1. Data Integration
          1. Examples of Data Integration
          2. How Did Microsoft Office Outlook 2007 Calendar Gadget for Windows SideShow Do It?
            1. SideShow Implementation
            2. Paying Attention to Performance
        2. Functional Integration
          1. Examples of Functional Integration
          2. How Did Unified Messaging Add-In for Outlook 2007 Do It?
            1. Unified Messaging Implementation
            2. Paying Attention to Discovering Unified Messenger Availability
      3. Integration Guidelines
        1. Data Integration
          1. Integrating with Data That Is Already in Outlook
          2. Bringing Data into Outlook
          3. Customizing Outlook Items
          4. Data Integration with Outlook Object Model
          5. Data Integration with Extended MAPI
          6. Data Integration with MAPI Store or Address Book Providers
          7. Data Integration with Replication API
        2. Business Logic
          1. Business Logic for Built-In Items
          2. Custom Business Logic
        3. User Interface Integration and Data Presentation
          1. Outlook Explorer Window
          2. Command Bars
          3. Navigation Pane
          4. View Pane
          5. Reading Pane
          6. To-Do Bar
          7. Context Menus
          8. Property Pages
          9. Outlook Inspector Window
          10. Use Interface Integration Example
        4. InfoPath Forms
          1. When to Use InfoPath Forms
          2. Creating and Deploying InfoPath Forms
          3. Using InfoPath E-Mail Forms in Outlook 2007
      4. APIs
        1. Architecture
        2. Outlook Object Model
          1. Unification
          2. Performance
          3. Security and Trustworthiness
          4. Innovation
        3. Form Regions
        4. MAPI as a Platform Component
          1. MAPI Profiles
          2. MAPI Service Providers
            1. MAPI Message Store Provider
            2. Outlook’s Message Store Provider
            3. Custom Message Store Provider
            4. MAPI Transport Providers
            5. Outlook’s MAPI Transport Providers
            6. Custom MAPI Transport Providers
            7. MAPI Address Book Provider
            8. Outlook’s MAPI Address Book Provider
            9. Custom MAPI Address Book Provider
        5. Outlook 2007 Integration API Reference
        6. Simple MAPI
        7. Deemphasized and Phased-Out Components
          1. Collaboration Data Objects 1.2.1
          2. Exchange Client Extensions
          3. Outlook Custom Forms with Form Pages
          4. MAPI Form Server (IMAPIForm)
          5. Exchange Forms Designer Forms
          6. Electronic Forms Designer (Microsoft Mail 3.0) Forms
      5. Development Tools
        1. Visual Basic for Applications
        2. Visual Studio Tools for Office
        3. Managed Versus Native Code
      6. Add-In Model
      7. Summary
  7. II. Quick Guide to Building Solutions
    1. 3. Writing Your First Outlook Add-in Using Visual Basic .NET
      1. Introducing the Instant Search Add-In
      2. Install the Outlook Add-in Templates
      3. Creating the Instant Search Add-In
      4. Writing Code
        1. The InitializeAddin Method
        2. Turn Option Strict On
        3. Adding Instance Variables
        4. Hooking Up Events in Visual Basic
        5. ItemContextMenuDisplay Event
        6. ContextMenuClose Event
        7. The DisplayInstantSearchExplorer Method
        8. Writing Code for Submenu Click Events
        9. Building the Add-in Project
      5. Creating a Shim Project
      6. Creating a Setup Project
        1. Building the Setup Project
        2. Installing the Instant Search Add-In
      7. Testing the Instant Search Add-in Solution
        1. What to Expect
        2. Troubleshooting
      8. Debug Mode
        1. Debugging Code
      9. Summary
    2. 4. Writing Your First Outlook Add-in Using C#
      1. Introducing the Instant Search Add-In
      2. Install the Outlook Add-in Templates
      3. Creating the Instant Search Add-In
      4. Writing Code
        1. InitializeAddin Method
        2. Adding Instance Variables
        3. Hooking Up Events in Visual C#
        4. ItemContextMenuDisplay Event
        5. ContextMenuClose Event
        6. Cleaning Up Event Handlers
        7. DisplayInstantSearchExplorer Method
        8. Writing Code for Submenu Click Events
        9. Building the Add-in Project
      5. Creating a Shim Project
      6. Creating a Setup Project
        1. Building the Setup Project
        2. Installing the Instant Search Add-In
      7. Testing the Instant Search Add-in Solution
        1. What to Expect
        2. Troubleshooting
      8. Debug Mode
        1. Debugging Code
      9. Summary
  8. III. Working with Outlook Data
    1. 5. Built-in Item Types
      1. Introduction to Built-in and Custom Item Types
        1. Understanding MessageClass
        2. Built-in vs. Custom Types
        3. Creating an Item
          1. Application.CreateItem Method
          2. Application.CreateItemFromTemplate Method
          3. Items.Add() Method
          4. Namespace.OpenSharedItem() Method
      2. MailItem, PostItem, and SharingItem Objects
        1. Appropriate Uses of MailItem and PostItem
        2. Compose MailItem
          1. Adding Recipients
          2. Set the Clear-Text Body
          3. Set the HTML Body
          4. Formatting the Body Using WordEditor
          5. Body Formats
          6. Adding Attachments
          7. Attachment Security
          8. Saving Attachments
          9. Sending the Message
          10. Send Using a Specific Account
        3. Read MailItem
          1. Distinguishing a Read Note from a Compose Note
          2. Determining the Sender Display Name and SMTP Address
          3. Creating a Response
          4. Responding Using an Action Object
        4. Adding an Electronic Business Card
        5. Create a To-Do Item
      3. PostItem Object
        1. Creating a PostItem
        2. Responding to a PostItem
      4. AppointmentItem Object
        1. Appropriate Uses of AppointmentItem
        2. One-Time Appointments
          1. Setting Start and End Time
          2. Using the TimeZone Object
          3. Creating a Reminder
        3. All-Day Events
        4. Appointment Attendees
          1. Using the Recipients Collection to Add Attendees
          2. Checking Attendee Availability
        5. Recurring Appointments
          1. Creating a Recurring Appointment
          2. Setting the Recurrence Pattern of an Appointment
          3. Creating a Recurring Appointment Using DayOfWeekMask
          4. Creating a Recurring Event
          5. Creating a MonthNth or YearNth Recurrence
          6. Working with a Single Appointment in a Series
          7. Determining the Original Date of an Exception
          8. Determining Whether an Appointment Instance Was Deleted
          9. Using GlobalAppointmentID
      5. MeetingItem Object
        1. Working with Meeting Requests
        2. Retrieving the Appointment Associated with a Meeting
        3. Responding to a Meeting Request
        4. Determining the Status of a Recipient of a Meeting Request
      6. ContactItem Object
        1. Appropriate Uses of ContactItem
        2. Working with Contact Properties
          1. Setting the Contact Name and Company
          2. Adding Items to the Links Collection Object
        3. Electronic Business Cards
      7. TaskItem Object
        1. Appropriate Uses of TaskItem
        2. Creating a Recurring Task
        3. Delegating a Task
      8. TaskRequestItem Object
        1. Working with Task Requests
          1. Retrieving the Associated Task of a Task Request
          2. Responding to a Task Request
      9. Other Item Types
        1. DistListItem Object
        2. JournalItem Object
        3. NoteItem Object
        4. StorageItem Object
      10. Summary
    2. 6. Accessing Outlook Data
      1. An Overview of Outlook Data Storage
        1. Exchange Server
          1. Online Mode
          2. Cached Mode
        2. Personal Folder Files (.pst)
        3. Custom Store Providers
      2. Accounts Collection and Account Object
      3. Stores Collection and Store Object
        1. Stores Collection
        2. Adding or Removing a Store Programmatically
        3. Working with the Store Object
          1. ExchangeStoreType Property
          2. FilePath and IsDataFileStore Properties
          3. GetRootFolder Method
          4. GetSearchFolders Method
          5. GetSpecialFolder Method
      4. Folders Collection and Folder Objects
        1. An Overview of Folder Types
          1. Placeholder Folders
          2. Content Folders
          3. Search Folders
          4. Discussion Folders
          5. Planning the Folder Design of Your Solution
        2. Folders Collection
          1. Adding a Folder Object to the Folder List
          2. Iterating Through a Collection of Folders
        3. Folder Object
        4. Working with the Folder Object
          1. GetDefaultFolder Method
          2. Parent Property and Folders Property
          3. GetFolderFromID Method
          4. GetFolder(folderPath) Procedure
        5. Folder Properties and Methods
          1. DefaultItemType Property
          2. DefaultMessageClass Property
          3. GetCalendarExporter Method
          4. GetStorage Method
          5. UserDefinedProperties Collection
      5. Folder Permissions
        1. Assigning Folder Permissions
        2. Assigning Roles
        3. Using the SharingItem Object to Assign Folder Permissions
      6. Accessing Items in a Folder
        1. Performance Considerations
        2. OutlookItem Helper Class
        3. Items Collection
          1. Deleting Items in a Collection
          2. Using SetColumns and ResetColumns to Improve Performance
          3. Use IncludeRecurrences to Expand Recurring Appointments
          4. Obtaining Recurring Appointments in a Date Range
        4. Table Object
          1. Using the GetTable Method
          2. GetArray Method
          3. Default Columns Set
          4. Adding Columns to the Table
            1. Valid Name Values
            2. Appending Type Information
            3. When to Use Columns.Add
          5. Factors That Determine Property Value Representation
            1. String Properties Affected by Store Providers
            2. Date, Binary, and Multivalued Properties Affected by Property Reference
          6. Invalid Properties
          7. Row Helper Methods
          8. Returning Hidden Items
      7. Summary
    3. 7. Address Books and Recipients
      1. An Overview of Outlook Address Books
        1. Exchange Global Address List
        2. Exchange Containers
        3. Offline Address Book
        4. Outlook Address Book
        5. Other Address Book Providers
      2. The Recipients Collection and Recipient Objects
        1. Outlook Object Model Guard Considerations
        2. The CreateRecipient Method
        3. Working with the Recipients Collection Object
          1. Adding Recipients to a MailItem Object
          2. Adding Recipients to an AppointmentItem Object
          3. Resolving Recipients
        4. Obtaining the SMTP Address of a Recipient
      3. The AddressLists Collection and AddressList Objects
        1. Enumerating AddressList Objects
        2. The AddressListType Property
        3. Determining Resolution Order of Address Lists
        4. Finding a Specific AddressList Object
        5. Determining the Contacts Folder for a Contacts Address Book
      4. The AddressEntries Collection and AddressEntry Object
        1. The AddressEntryUserType Property
        2. Finding a Specific AddressEntry Object
        3. The GetAddressEntryFromID Method
        4. Displaying AddressEntry Details
        5. Getting Availability Information for a User
      5. The ExchangeUser Object
        1. Working with ExchangeUser Properties
        2. Obtaining an ExchangeUser Object from an AddressEntry Object
        3. The GetExchangeUserManager Method
        4. The GetDirectReports Method
        5. The GetMemberOfList Method
        6. Obtaining Proxy Addresses for an ExchangeUser Object
      6. The ExchangeDistributionList Object
        1. The GetExchangeDistributionListMembers Method
        2. The GetMemberOfList Method
        3. The GetOwners Method
      7. The SelectNamesDialog Object
        1. Using the SetDefaultDisplayMode Method
        2. Dialog Caption and Recipient Selectors
        3. Setting the InitialAddressList Property
        4. Displaying the Select Names Dialog Box
        5. Using SelectNamesDialog.Recipients
      8. Summary
    4. 8. Responding to Events
      1. Writing Event Handlers in Managed Code
        1. Hooking Up Events in Visual Basic .NET
          1. Using the WithEvents Keyword
          2. Using AddHandler and RemoveHandler Statements
        2. Hooking Up Events in C#
          1. Common Errors and Issues for Events
          2. Step-by-Step Event Procedures for C#
          3. Unhooking Event Handlers
      2. Outlook 2007 Events
        1. Application Object Events
          1. AdvancedSearchComplete
          2. AdvancedSearchStopped
          3. AttachmentContextMenuDisplay
          4. BeforeFolderSharingDialog
          5. ContextMenuClose
          6. FolderContextMenuDisplay
          7. ItemContextMenuDisplay
          8. ItemLoad
          9. ItemSend
          10. MapiLogonComplete
          11. NewMail
          12. NewMailEx
          13. OptionsPagesAdd
          14. Quit
          15. Reminder
          16. ShortcutContextMenuDisplay
          17. Startup
          18. StoreContextMenuDisplay
          19. ViewContextMenuDisplay
        2. Explorers Collection Event
          1. NewExplorer
        3. Explorer Object Events
          1. Activate
          2. BeforeFolderSwitch
          3. BeforeItemCopy
          4. BeforeItemCut
          5. BeforeMaximize
          6. BeforeMinimize
          7. BeforeMove
          8. BeforeSize
          9. BeforeViewSwitch
          10. Close
          11. Deactivate
          12. FolderSwitch
          13. SelectionChange
          14. ViewSwitch
        4. Folders Collection Events
          1. FolderAdd
          2. FolderChange
          3. FolderRemove
        5. Folder Object Events
          1. BeforeFolderMove
          2. BeforeItemMove
        6. FormRegion Object
          1. Close
          2. Expanded
        7. Inspectors Collection Event
          1. NewInspector
        8. Inspector Object Events
          1. Activate
          2. BeforeMaximize
          3. BeforeMinimize
          4. BeforeMove
          5. BeforeSize
          6. Close
          7. Deactivate
          8. PageChange
        9. Items Collection Events
          1. ItemAdd
          2. ItemChange
          3. ItemRemove
        10. Item-Level Events
          1. AttachmentAdd
          2. AttachmentRead
          3. AttachmentRemove
          4. BeforeAttachmentAdd
          5. BeforeAttachmentPreview
          6. BeforeAttachmentRead
          7. BeforeAttachmentSave
          8. BeforeAttachmentWriteToTempFile
          9. BeforeAutoSave
          10. BeforeCheckNames
          11. BeforeDelete
          12. Close
          13. CustomAction
          14. CustomPropertyChange
          15. Forward
          16. Open
          17. PropertyChange
          18. Read
          19. Reply
          20. ReplyAll
          21. Send
          22. Unload
          23. Write
        11. Namespace Object Events
          1. AutoDiscoverComplete
          2. OptionsPagesAdd
        12. NavigationGroups Collection Events
          1. NavigationFolderAdd
          2. NavigationFolderRemove
          3. SelectedChange
        13. NavigationPane Object Event
          1. ModuleSwitch
        14. OutlookBarPane Object Events
          1. BeforeNavigate
        15. OutlookBarGroup Object Events
          1. GroupAdd
          2. BeforeGroupAdd
          3. BeforeGroupRemove
        16. OutlookBarShortcut Object Events
          1. ShortcutAdd
          2. BeforeShortcutAdd
          3. BeforeShortcutRemove
        17. Stores Collection Events
          1. BeforeStoreRemove
          2. StoreAdd
        18. SyncObject Object Events
          1. OnError
          2. Progress
          3. SyncEnd
          4. SyncStart
        19. Reminders Collection Events
          1. BeforeReminderShow
          2. ReminderAdd
          3. ReminderChange
          4. ReminderFire
          5. ReminderRemove
          6. Snooze
        20. Views Collection Events
          1. ViewAdd
          2. ViewRemove
      3. Summary
    5. 9. Sharing Information with Other Users
      1. Outlook and Shared Data
      2. Sharing in iCalendar Format
        1. Sharing a Calendar Through E-Mail
        2. Saving a Calendar to Disk
        3. Saving an Appointment to Disk
        4. Opening an iCalendar File
      3. Subscribing to Shared Folders
        1. RSS Feeds
        2. SharePoint Folders
          1. Locating the SharePoint Sync URL
        3. Internet Calendars
      4. Using the SharingItem Object
        1. SharingItem Types
        2. Sharing a Folder with a Sharing Invitation
        3. Requesting Folder Access with a Sharing Request
        4. Processing a Sharing Item
          1. Sharing Invitations
          2. Sharing Requests
          3. Sharing Responses
      5. Summary
    6. 10. Organizing Outlook Data
      1. How Outlook 2007 Helps to Organize Information
      2. The Categories Collection and Category Objects
        1. Creating a Category
        2. Assigning One or More Categories to an Item
        3. Displaying the Categories Dialog Box
      3. Task Flagging
        1. Controlling Visibility of the To-Do Bar
        2. Creating To-Do Items That Appear in the To-Do Bar
      4. The Rules Collection and Rule Objects
        1. Overview of Rules Programming
        2. Rules Collection
          1. Obtaining the Rules Collection
          2. Creating a Rule Object
          3. Enumerating Rules
          4. RSS Rules Processing
          5. Deleting a Rule
          6. Saving Rules
          7. Handling Errors During a Save Operation
        3. The Rule Object
          1. Executing a Rule
          2. Causing a Rule to Operate Locally
        4. The RuleActions Collection
        5. The RuleConditions Collection
        6. Get or Set Action or Condition Properties with an Array
        7. Rules Sample Add-In
      5. Search Folders
        1. When to Use a Search Folder
        2. Enumerating Search Folders
        3. Creating a Search Folder Programmatically
      6. Outlook Views
        1. Objects That Derive from the View Object
        2. Adding or Removing a View Programmatically
      7. Customizing Your View
        1. Specifying Fields in a View
        2. Filtering Items in the View Object
        3. Sorting Items in a View
          1. Specifying Properties for Sorting
          2. Specifying Built-In Properties for Sorting
          3. Specifying Custom Properties for Sorting
        4. The AutoFormatRules Collection
      8. Summary
    7. 11. Searching Outlook Data
      1. Overview of Searching Data
      2. Outlook Query Languages
        1. AQS
          1. Case Sensitivity
          2. Keywords and Locale
          3. Search Scope
          4. Keywords for All Modules
          5. Keywords for Mail Module
          6. Keywords for Calendar Module
          7. Keywords for Contacts Module
          8. Keywords for Tasks Module
          9. Keywords and Symbols
          10. String Specifier <string>
          11. Date Specifier <date>
          12. Boolean Specifier <bool>
          13. Systemsize Specifier <systemsize>
          14. Keywords for Custom Properties
        2. DASL
          1. Property Specifiers
          2. String Comparisons
            1. Equivalence Matching
            2. Prefix, Phrase, and Substring Matching
              1. like
          3. Searching the Body of an Item
          4. Searching Attachments
          5. Boolean Properties in DASL Syntax
          6. Keywords Properties
          7. Custom Properties in a DASL Query
          8. Building DASL Queries
          9. Property Specifiers
          10. String Comparisons
          11. Boolean Properties in Jet Syntax
          12. Custom Properties in a Jet Query
          13. Keywords Properties in a Jet Query
      3. Date-Time Comparisons
        1. Filtering Recurring Items in the Calendar Folder
        2. Date-Time Format of Comparison Strings
        3. Time Zones Used in Comparison
        4. Conversion to UTC for DASL Queries
          1. LocalTimeToUTC
          2. Outlook Date-Time Macros
      4. Integer Comparisons
      5. Invalid Properties
        1. Jet
        2. DASL
      6. Comparison and Logical Operators
        1. Comparison Operators
        2. Logical Operators
          1. Not
          2. And
          3. Or
        3. Null Comparisons
      7. Search Entry Points
      8. Search Considerations
        1. Performance
        2. Read-Only vs. Read/Write
        3. Searching Subfolders
        4. Windows Desktop Search
      9. Summary
  9. IV. Providing a User Interface for Your Solution
    1. 12. Introducing the Outlook User Interface
      1. Decoding the User Interface
      2. The Explorer Window (The Explorer Object)
      3. Programming the Explorer Object
        1. The Explorers Collection
          1. Creating a New Explorer Window
          2. Accessing the Active Explorer
          3. Current Folder and Folder Change Events
          4. Determining the Selection Object in the Explorer Window
          5. Working with Panes
      4. The Inspector Window (The Inspector Object)
      5. Programming the Inspectors Collection and Inspector Object
        1. The Inspectors Collection
          1. Creating a New Inspector Window
          2. Accessing the Active Inspector
          3. Accessing the CurrentItem Property
      6. Working with the Navigation Pane
        1. Making the Most of Navigation Modules
        2. Adding Structure with Navigation Groups
          1. Creating a Navigation Group and Adding Folders
          2. Deleting a Navigation Group
        3. Removing Folders
      7. Folder Views
      8. The Reading Pane
        1. Customizing the Reading Pane
      9. The To-Do Bar
      10. Command Bars
      11. Context Menus
      12. Folder Home Pages
      13. Summary
    2. 13. Creating Form Regions
      1. Introduction to Form Regions
        1. Form Pages Compared with Form Regions
        2. Form Region Types
          1. Adjoining Form Regions
          2. Separate Form Regions
          3. Replacement and Replace-All Form Regions
        3. Standard Form Types
        4. Anatomy of a Form Region Solution
      2. Becoming Familiar with Form Region Design
        1. Designing a Form Region
          1. Outlook Form Design Mode
          2. Entering Design Mode
          3. Renaming a Form Region Tab
          4. Saving a Form Region
        2. Adding Controls
          1. The Control Toolbox
          2. Adding Additional Controls to the Control Toolbox
          3. Creating a Control Template
          4. Accessing Control Properties
          5. Control Advanced Properties
        3. Working with Fields
          1. Using the Field Chooser
          2. Binding Data with a Control
          3. Creating Custom Fields
        4. Polishing Your Form Region
          1. Understanding Automatic Layout
          2. Layout Guidelines
          3. Fixing Layout Errors
          4. Form Region Theme Support
          5. Making a Form Region Sendable
      3. Form Region End to End
        1. Step 1: Creating a Form Region
        2. Step 2: Writing Business Logic
          1. Hooking Up a Form Region and an Add-In
            1. Implementing GetFormRegionStorage
            2. Implementing a Form Region Wrapper
        3. Step 3: Registering the Form Region
          1. Authoring a Form Region Manifest
            1. Manifest Basics
            2. Optional Elements
          2. Custom Icons
          3. Describing Custom Actions
          4. Localizing a Form Region
            1. Using String Overrides
          5. Registering a Form Region
          6. Replacing the Default Form for a Folder
        4. Advanced Form Region Methods
      4. Summary
    3. 14. Form Region Controls
      1. Standard Controls
        1. The Outlook Check Box
        2. The Outlook Combo Box
        3. The Outlook Command Button
        4. The Outlook Label Control
        5. The Outlook List Box
        6. The Outlook Option Button
        7. The Outlook Text Box
      2. Outlook-Specific Controls
        1. The Outlook Body Control
        2. The Outlook Business Card Control
        3. The Outlook Category Control
        4. The Outlook Contact Photo Control
        5. The Outlook Date Control
        6. The Outlook Frame Header Control
        7. The Outlook InfoBar Control
        8. The Outlook Page Control
        9. The Outlook Recipient Control
        10. The Outlook Sender Photo Control
        11. The Outlook Time Zone Control
        12. The Outlook Time Control
        13. The Outlook View Control
      3. Using Form Region Controls
        1. Adding Controls to the Control Toolbox
          1. Automatic Control Replacement
        2. Adding Controls Programmatically
        3. Programmatic Access to Controls
          1. Using the Control Interface
          2. Using the OlkControl Interface
          3. Hooking Up Control Events
      4. Summary
    4. 15. Extending the Ribbon
      1. Introducing Ribbon Extensibility
        1. What Happens with Existing Code
          1. Inspector Command Bars
          2. Voting Options
          3. Custom Actions
      2. Outlook RibbonX Sample Add-In
        1. Installation Instructions
        2. Running the Sample Add-In
      3. Modifying Your Code to Use RibbonX
        1. Authoring Ribbon XML
        2. IRibbonExtensibility Interface
        3. Detecting Errors
        4. NewInspector Event
        5. OutlookInspector Class
        6. IRibbonUI Object
        7. IRibbonControl Object
      4. Summary
    5. 16. Completing Your User Interface
      1. Custom Task Panes
        1. When to Use a Custom Task Pane
        2. Implementing a Custom Task Pane
          1. Building a User Control Task Pane Implementation
          2. Providing a Program ID
        3. Adding a Custom Task Pane in an Add-In
          1. Implementing Interfaces
          2. Adding a Custom Task Pane to a Window
          3. Windows Theme Support in Custom Task Panes
      2. Custom Property Pages
        1. Designing a Custom Property Page
          1. Creating a Windows Form User Control
          2. Dirtying the Page and Saving Changes
          3. Loading Settings
      3. Summary
  10. V. Advanced Topics
    1. 17. Using the PropertyAccessor Object
      1. Scenarios for PropertyAccessor
      2. Objects That Implement PropertyAccessor
      3. PropertyAccessor Namespaces
        1. Obtaining a Specific SchemaName String
        2. Type Specifiers
        3. The Proptag Namespace
        4. Named Property ID Namespace
        5. Named Property String Namespace
        6. Office Namespaces
          1. The Office Namespace
          2. The Outlook Namespace
        7. DAV Namespaces
      4. The PropertyAccessor Object
        1. The GetProperty Method
        2. The SetProperty Method
        3. The GetProperties Method
        4. The SetProperties Method
        5. The DeleteProperty Method
        6. The DeleteProperties Method
        7. Date-Time Properties
        8. Multivalued Properties
        9. Helper Methods
          1. The BinaryToString Method
          2. The LocalTimeToUTC Method
          3. The StringToBinary Method
          4. The UTCToLocalTime Method
      5. Detecting and Reporting Error Conditions
      6. Property Size Limitations
      7. Summary
    2. 18. Add-in Setup and Deployment
      1. Creating a Setup Project
      2. Writing Required Keys to the Windows Registry
        1. Installing to HKEY_CURRENT_USER
        2. Installing to HKEY_LOCAL_MACHINE
        3. Registry Keys Required for an Add-In
        4. Registry Keys Required for a Form Region
      3. Required Installation Components
        1. .NET Framework Version 2.0
        2. Visual Studio Tools for Office Runtime
        3. Primary Interop Assemblies
        4. Add-in Assembly and Other Required Components
        5. Using a COM Shim
        6. Writing Custom Actions
      4. Deploying to Users Who Are Not Administrators
      5. Summary
    3. 19. Trust and Security
      1. Code Security for Outlook 2007
        1. Guard Principles
        2. Security Warning Types
          1. Address Book Warning
          2. Send Message Warning
          3. Execute Actions Warning
        3. Detecting Trusted State
        4. Trapping Errors
        5. Restricted Properties and Methods
      2. Trusting Managed Code
        1. Trustable Shared Add-Ins
      3. Trust Center
        1. Managing Add-Ins
        2. Macro Security
        3. Programmatic Access
      4. Administrative Options
        1. Group Policy Security for COM Add-Ins
        2. Exchange-Brokered Security for COM Add-Ins
        3. Configuring a Security Policy
          1. Setting AdminSecurityMode
        4. Trusting an Add-In
          1. COM and Shared Add-ins with COM Shims
          2. VSTO Add-Ins
          3. Creating a Hash for a Trusted Add-In
          4. Specify a Trusted Add-in in Group Policy
        5. Form Region Policy
          1. Disabling Form Regions
          2. Disabling Extensions on a Particular Message Type
          3. Locking an Adjoining Form Region
        6. Folder Home Page Policy
      5. Summary
  11. About the Authors
    1. Randy Byrne
    2. Ryan Gregg
  12. More Great Developer Resources
    1. Developer Step by Step
    2. Developer Reference
    3. Advanced Topics
  13. Additional Resources for Developers
    1. Visual Basic 2005
    2. Visual C# 2005
    3. Web Development
    4. Data Access
    5. SQL Server 2005
    6. Other Visual Studio 2005 Topics
    7. Other Developer Topics
  14. Index
  15. About the Authors
  16. Copyright