O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Programming Applications for Microsoft® Office Outlook® 2007

Book Description

Get the definitive guide to learning how to exploit the built-in functionality in Outlook 2007. Written by two experts on Outlook extensibility, this book delivers practical guidance and extensive code samples to help you extend, adapt, and customize information flow to the desktop.



Discover how to:

  • Programmatically create built-in item types to expose Outlook functionality in your solution
  • Use the Items collection and Table object to access containers for Outlook items
  • Connect to shared folders, Internet calendars, and RSS subscriptions
  • Write event handlers and hook up event delegates for Outlook objects
  • Implement programmatic search and organizational schemas
  • Add controls at design-time or runtime to help you build rich form regions
  • Extend the Office Fluent Ribbon with customized task panes and property pages
  • Develop trusted add-ins that do not display security prompts
  • Write registry keys, install required assemblies, and deploy your solution


      Companion Web site includes:
      • Code samples in Microsoft Visual Basic and Visual C#
      • Reusable code snippets
      • Add-in templates and samples

    Table of Contents

    1. Programming Applications for Microsoft® Office Outlook® 2007
    2. Foreword
    3. Acknowledgments
    4. 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
    5. 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
    6. 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
    7. 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
    8. 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
    9. 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
    10. About the Authors
      1. Randy Byrne
      2. Ryan Gregg
    11. More Great Developer Resources
      1. Developer Step by Step
      2. Developer Reference
      3. Advanced Topics
    12. 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
    13. Index
    14. About the Authors
    15. Copyright