この資料では、Microsoft Windows CE Toolkit for Visual Basic 6.0 (VBCE6) または eMbedded Visual Basic 3.0 (eVB) を使用する開発者向けに、Pocket Outlook Object Model (POOM) SDK の概要を説明します。次の内容が含まれています。
Pocket Outlook Object Model SDK を使用することにより、Windows CE Toolkits for Visual Basic 6.0 や Microsoft Visual C++ 6.0 (VCCE6) に加えて、eMbedded Visual Tools 3.0 を使用するプログラマに Pocket Outlook のオブジェクト モデルを公開することができます。これにより、連絡先、予定表、仕事のデータをプログラムから管理できるだけでなく、都市やタイムゾーンの情報を参照することも可能になります。
Pocket Outlook Object Model は、デスクトップ版の Microsoft Outlook 97 と Microsoft Outlook 98 の Object Model に基づいてモデル化されています。Windows CE デバイスに適した、よりコンパクトな DLL を提供するため、POOM はデスクトップ版 Outlook Object Model の小さなサブセットになっています。
Pocket Outlook Object Model は、以下の仕様を満たします。
下位互換性。コンポーネントは次のプラットフォーム上で動作します。
Handheld PC 2.0
Handheld PC Pro 3.0
Handheld PC 2000
パームサイズ PC 1.2
Pocket PC
コンポーネントは、Handheld PC 2.0 以来変更されていない既存コンポーネントの上位に位置します。
Outlook の互換性。デスクトップ版 Outlook Object Model をベースにする一方で、デバイス上での単純化を図るための相違点が若干存在します。たとえば、NameSpace オブジェクトは提供されません。これは、Outlook が MAPI セッションにログオンするために使用するもので、Windows CE デバイス上では余分なレイヤです。Pocket Outlook Object Model は、Outlook Object Model のサブセットというよりは、Outlook Object Model がベースであるという方がより正確です。
オートメーション オブジェクト。オートメーション オブジェクトには 2 つのインターフェイスがあり、これを使用して、Microsoft Visual Basic やスクリプティングのプログラマは Object Model を使用することができます。Microsoft C や Visual C++ では、メソッドやプロパティの名前が Visual Basic での場合より複雑ですが、ユーザーにとっては Object Model が使用されていることの方が重要です。
簡潔さ。インターフェイスはきわめて簡潔で、デスクトップ版 Outlook Object Model の機能の小規模なサブセットとなっています。
Pocket Outlook Object Model のメインのインターフェイスは、Pocket Outlook Application オブジェクトです。他のすべてのオブジェクトは、ここから派生したものです。Application オブジェクトにログオンすると、各種の Folder オブジェクトにアクセスすることができます。
マイクロソフトは、この情報をプログラミング言語の使用方法の一例として提供するだけであり、市場性および特定目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。この資料は、例示されているプログラミング言語やプロシージャの作成およびデバッグに使用するツールについて理解されているユーザーを対象としています。Microsoft Support 担当者は、特定のプロシージャの機能についての問い合わせにはお答えできますが、ユーザー固有の目的に合わせた機能の追加、プロシージャの作成などの内容変更は行っておりません。
Logon メソッドと Logoff メソッドはそれぞれ、Pocket Outlook の Application オブジェクトに対して呼び出される最初と最後のメソッドです。ユーザーは、Logon によって Pocket Outlook セッションにログオンし、Logoff によってログアウトします。
これらのメソッドは、次のように呼び出されます。
Option Explicit
Dim pOLA As PocketOutlook.Application
Private Sub Form_Load()
Set pOLA = CreateObject("PocketOutlook.Application")
'Since you are going to be displaying items, you pass in the
'form’s HWND to Logon so that dialog boxes will be parented to
'this window. Otherwise, the user could display
'multiple items at a time.
pOLA.Logon (Form1.hWnd) 'logs on to a session
End Sub
Private Sub Form_Unload(Cancel As Integer)
pOLA.Logoff 'logs off of a session
End Sub
新しい連絡先の作成方法
eMbedded Visual Basic で新しい Windows CE プロジェクトを作成します。デフォルトで Form1 が作成されます。
Form1 に次のコードを貼り付けます。
Option Explicit
Dim pOLA As PocketOutlook.Application
Dim pContact As PocketOutlook.ContactItem
Const olCreateContact = 2
Private Sub Form_Load()
Set pOLA = CreateObject("PocketOutlook.Application")
pOLA.Logon (Form1.hWnd)
AddNewContact "Maxwell", "Smart"
End Sub
Function AddNewContact(sFirstName As String, sLastName As String) As Long
Set pContact = pOLA.CreateItem(olCreateContact)
pContact.FirstName = sFirstName
pContact.LastName = sLastName
pContact.Save
Set pContact = Nothing
End Function
Private Sub Form_Unload(Cancel As Integer)
pOLA.logoff
Set pOLA = Nothing
End Sub
連絡先に関する情報を表示する方法
注 : このサンプルは、特定の連絡先が存在することを前提としています。
eMbedded Visual Basic で新しい Windows CE プロジェクトを作成します。デフォルトで Form1 が作成されます。
コマンド ボタン (CommandButton) コントロールを Form1 に追加します。
Form1 に次のコードを貼り付けます。
Option Explicit
Dim pOLA As PocketOutlook.Application
Dim pContact As PocketOutlook.ContactItem
Const olFolderContacts = 10
Private Sub Form_Load()
Set pOLA = CreateObject("PocketOutlook.Application")
pOLA.Logon (Form1.hWnd)
End Sub
Private Sub Command1_Click()
DisplayContact "Smart, Maxwell"
End Sub
Sub DisplayContact(inpContactName As String)
Set pContact = pOLA.GetDefaultFolder(olFolderContacts).Items.Find( _
"[FileAs] = """ & inpContactName & """")
Set pContact = pOLA.GetItemFromOid(pContact.oid)
pContact.Display
Set pContact = Nothing
End Sub
Private Sub Form_Unload(Cancel As Integer)
pOLA.logoff
Set pOLA = Nothing
End Sub
連絡先の一覧を取得する方法
eMbedded Visual Basic で新しい Windows CE プロジェクトを作成します。デフォルトで Form1 が作成されます。
Form1 にリスト ボックス (ListBox) コントロールを追加します。
Form1 に次のコードを貼り付けます。
Option Explicit
Dim pOLA As PocketOutlook.Application
Dim pContact As PocketOutlook.ContactItem
Dim pItems As PocketOutlook.Items
Const olFolderContacts = 10
Private Sub Form_Load()
Set pOLA = CreateObject("PocketOutlook.Application")
pOLA.Logon (Form1.hWnd)
GetContacts List1
End Sub
Private Sub GetContacts(lstCtrl As ListBox)
Dim i As Integer
lstCtrl.Clear
'Add all the Contacts to a ListBox. Start by getting the
'Contacts folder, and then get its Item Collection.
Set pItems = pOLA.GetDefaultFolder(olFolderContacts).Items
For i = 1 To pItems.Count
Set pContact = pItems.Item(i)
lstCtrl.AddItem i & ": " & pContact.FileAs
Next i
Set pItems = Nothing
Set pContact = Nothing
End Sub
Private Sub Form_Unload(Cancel As Integer)
pOLA.logoff
Set pOLA = Nothing
End Sub
予定の作成方法
eMbedded Visual Basic で新しい Windows CE プロジェクトを作成します。デフォルトで Form1 が作成されます。
コマンド ボタン (CommandButton) コントロールを Form1 に追加します。
Form1 に次のコードを貼り付けます。
Option Explicit
Dim pOLA As PocketOutlook.Application
Dim pApptItem As PocketOutlook.AppointmentItem
Const olCreateAppointment = 1
Private Sub Command1_Click()
NewAppt "Meet with Chief", "Cone of Silence Room", _
"Discuss shoe phone repair bills", _
CDate("12/15/00 08:30:00 AM"), _
CDate("12/15/00 10:30:00 AM")
End Sub
Private Sub Form_Load()
Set pOLA = CreateObject("PocketOutlook.Application")
pOLA.Logon (Form1.hWnd)
End Sub
Private Sub NewAppt(sSubject As String, sLoc As String, _
sBody As String, dStart As Date, dEnd As Date)
Set pApptItem = pOLA.CreateItem(olCreateAppointment)
pApptItem.Subject = sSubject
pApptItem.Location = sLoc
pApptItem.Body = sBody
pApptItem.Start = dStart
pApptItem.End = dEnd
pApptItem.Save
Set pApptItem = Nothing
End Sub
Private Sub Form_Unload(Cancel As Integer)
pOLA.logoff
Set pOLA = Nothing
End Sub
予定の情報を取得する方法
注 : このサンプルは、今日の予定が存在することを前提としています。
eMbedded Visual Basic で新しい Windows CE プロジェクトを作成します。デフォルトで Form1 が作成されます。
Option Explicit
Dim pOLA As PocketOutlook.Application
Dim pApptItem As PocketOutlook.AppointmentItem
Dim pItems As PocketOutlook.Items
Const olFolderCalendar = 9
Private Sub Command1_Click()
ViewTodaysAppointments Date, List1
End Sub
Private Sub Form_Load()
Set pOLA = CreateObject("PocketOutlook.Application")
pOLA.Logon (Form1.hWnd)
End Sub
Sub ViewTodaysAppointments(inpDate As Date, lstCtrl As ListBox)
Dim iItem As Integer
lstCtrl.Clear
Set pItems = pOLA.GetDefaultFolder(olFolderCalendar).Items
'Use the Restrict method to find only those items with a start
'date of today. pTodaysItems will be a new Item Collection that
'contains only those items that pass the restriction of
'occurring today.
Set pItems = pItems.Restrict("[Start] = """ & inpDate & """")
For iItem = 1 To pItems.Count
Set pApptItem = pItems.Item(iItem)
lstCtrl.AddItem pApptItem.Subject & " at " & _
FormatDateTime(pApptItem.Start, vbShortTime)
Next
Set pItems = Nothing
Set pApptItem = Nothing
End Sub
Private Sub Form_Unload(Cancel As Integer)
pOLA.logoff
Set pOLA = Nothing
End Sub
仕事の作成方法
eMbedded Visual Basic で新しい Windows CE プロジェクトを作成します。デフォルトで Form1 が作成されます。
コマンド ボタン (CommandButton) コントロールを Form1 に追加します。
Form1 に次のコードを貼り付けます。
Option Explicit
Dim pOLA As PocketOutlook.Application
Dim pTaskItem As PocketOutlook.TaskItem
Const olCreateTasks = 3
Const olDialog = 1
Const olSound = 8
Private Sub Form_Load()
Set pOLA = CreateObject("PocketOutlook.Application")
pOLA.Logon (Form1.hWnd)
End Sub
Private Sub Command1_Click()
NewTask "Pick up shoe phone at repair shop", "Watch out for KAOS", _
Now() + 2, Now(), "Alarm3", True
End Sub
Sub NewTask(sSubject As String, sBody As String, _
dDue As Date, dStart As Date, _
sSoundFile As String, bReminderSet As Boolean)
Set pTaskItem = pOLA.CreateItem(olCreateTasks)
pTaskItem.Subject = sSubject
pTaskItem.Body = sBody
pTaskItem.DueDate = dDue
pTaskItem.StartDate = dStart
pTaskItem.ReminderSet = bReminderSet
If bReminderSet Then
pTaskItem.ReminderOptions = olSound Or olDialog
pTaskItem.ReminderSoundFile = sSoundFile
pTaskItem.ReminderTime = dDue - 1
End If
pTaskItem.Save
Set pTaskItem = Nothing
End Sub
Private Sub Form_Unload(Cancel As Integer)
pOLA.logoff
Set pOLA = Nothing
End Sub
仕事の情報を取得する方法
eMbedded Visual Basic で新しい Windows CE プロジェクトを作成します。デフォルトで Form1 が作成されます。
Option Explicit
Dim pOLA As PocketOutlook.Application
Dim pTaskItem As PocketOutlook.TaskItem
Dim pItems As PocketOutlook.Items
Const olFolderTasks = 13
Private Sub Form_Load()
Set pOLA = CreateObject("PocketOutlook.Application")
pOLA.Logon (Form1.hWnd)
Command1.Caption = "View Today's Tasks"
Command2.Caption = "View All Tasks"
End Sub
Private Sub Command1_Click()
ViewTodaysTasks Date + 1, List1
End Sub
Private Sub Command2_Click()
ViewAllTasks List1
End Sub
Sub ViewTodaysTasks(inpDate As Date, lstCtrl As ListBox)
Dim iItem As Integer
lstCtrl.Clear
Set pItems = pOLA.GetDefaultFolder(olFolderTasks).Items
'Use the Restrict method to find only those items with a due
'date of today.
Set pItems = pItems.Restrict("[Duedate] = """ & inpDate & """")
For iItem = 1 To pItems.Count
Set pTaskItem = pItems.Item(iItem)
lstCtrl.AddItem pTaskItem.Subject
Next
Set pItems = Nothing
Set pTaskItem = Nothing
End Sub
Sub ViewAllTasks(lstCtrl As ListBox)
Dim iItem As Integer
lstCtrl.Clear
Set pItems = pOLA.GetDefaultFolder(olFolderTasks).Items
For iItem = 1 To pItems.Count
Set pTaskItem = pItems.Item(iItem)
lstCtrl.AddItem pTaskItem.Subject & " on " & _
FormatDateTime(pTaskItem.DueDate, vbShortDate)
Next
Set pItems = Nothing
Set pTaskItem = Nothing
End Sub
Private Sub Form_Unload(Cancel As Integer)
pOLA.Logoff
Set pOLA = Nothing
End Sub
都市を追加する方法
都市は、コントロール パネルの世界時計にあり、ユーザーにより定義されたもの、または ROM 内にあるものです。ROM 内にある場合は、都市を変更できません。
注 : Pocket PC ベースのデバイスでは、都市の情報は時計アプレットの [設定] メニュー オプションにあります。
City オブジェクトの Longitude や Latitude のプロパティは、以下の基準を使用して設定します。
西経は負の値、東経は正の値です。たとえば、西経 104.98 度は -10498 となります。
南緯は負の値、北緯は正の値です。たとえば、北緯 39.77 度は 3977 となります。
注 : 次のコードを実行する前に、コントロール パネルの世界時計 (Pocket PC ベースのデバイスでは時計) を終了してください。終了しないと、エラーが発生します。
eMbedded Visual Basic で新しい Windows CE プロジェクトを作成します。デフォルトで Form1 が作成されます。
コマンド ボタン (CommandButton) コントロールを Form1 に追加します。
Form1 に次のコードを貼り付けます。
Option Explicit
Dim pOLA As PocketOutlook.Application
Dim pCityItem As PocketOutlook.CityItem
Dim pItems As PocketOutlook.Items
Const olFolderCities = 101
Const olCreateCity = 102
Private Sub Form_Load()
Set pOLA = CreateObject("PocketOutlook.Application")
pOLA.Logon (Form1.hWnd)
End Sub
Private Sub Command1_Click()
AddNewCity "Steilacoom, WA", "USA"
End Sub
Private Sub AddNewCity(sCityName As String, _
sCountryName As String)
'Check to see if city exists first because
'we won't get an error if it's created twice.
If CityExists(sCityName) = True Then
MsgBox "City already exists"
Exit Sub
End If
Set pCityItem = pOLA.CreateItem(olCreateCity)
pCityItem.Name = sCityName
pCityItem.Country = sCountryName
pCityItem.Save
Set pCityItem = Nothing
End Sub
Private Function CityExists(sCityName As String) As Boolean
Set pItems = pOLA.GetDefaultFolder(olFolderCities).Items
Set pCityItem = pItems.Find("[NAME] = """ & sCityName & """")
If pCityItem Is Nothing Then
CityExists = False
Else
CityExists = True
End If
Set pCityItem = Nothing
End Function
Private Sub Form_Unload(Cancel As Integer)
pOLA.Logoff
Set pOLA = Nothing
End Sub
都市とタイムゾーンの情報を取得する方法
注 : 次のコードを実行する前に、コントロール パネルの世界時計 (Pocket PC ベースのデバイスでは時計) を終了してください。終了しないと、エラーが発生します。
eMbedded Visual Basic で新しい Windows CE プロジェクトを作成します。デフォルトで Form1 が作成されます。
コマンド ボタン (CommandButton) コントロールを Form1 に追加します。
Form1 に次のコードを貼り付けます。
Option Explicit
Const olFolderCities = 101
Dim pOLA As PocketOutlook.Application
Dim pCity As PocketOutlook.CityItem
Private Sub Form_Load()
Set pOLA = CreateObject("PocketOutlook.Application")
pOLA.Logon (Form1.hWnd)
End Sub
Private Sub Command1_Click()
FindCityTimeZone "Sioux Falls, SD"
End Sub
Private Sub FindCityTimeZone(inpCity As String)
Dim sTimeZone As String
Set pCity = pOLA.GetDefaultFolder(olFolderCities).Items.Find( _
"[NAME] = """ & inpCity & """")
sTimeZone = pOLA.GetTimeZoneFromIndex( _
pCity.TimezoneIndex).StandardName
MsgBox pCity.Name & " is in the '" & sTimeZone & "' time zone."
Set pCity = Nothing
End Sub
Private Sub Form_Unload(Cancel As Integer)
pOLA.Logoff
Set pOLA = Nothing
End Sub
自宅と訪問先を指定する方法
注 : 次のコードを実行する前に、コントロール パネルの世界時計 (Pocket PC ベースのデバイスでは時計) を終了してください。終了しないと、エラーが発生します。
eMbedded Visual Basic で新しい Windows CE プロジェクトを作成します。デフォルトで Form1 が作成されます。
Option Explicit
Const olFolderCities = 101
Const olHomeCity = 0
Const olVisitingCity = 1
Dim pOLA As PocketOutlook.Application
Dim pCity As PocketOutlook.CityItem
Private Sub Form_Load()
Set pOLA = CreateObject("PocketOutlook.Application")
pOLA.Logon (Form1.hWnd)
Command1.Caption = "Visiting"
Command2.Caption = "Home"
End Sub
Private Sub Command1_Click()
CitySetVisit "Vancouver, BC"
End Sub
Private Sub Command2_Click()
CitySetHome "Seattle, WA"
End Sub
Private Sub CitySetVisit(inpCity As String)
Set pCity = pOLA.GetDefaultFolder(olFolderCities).Items.Find( _
"[NAME] = """ & inpCity & """")
pOLA.VisitingCity = pCity
pOLA.CurrentCityIndex = olVisitingCity
MsgBox "Visiting city is now: " & pOLA.VisitingCity.Name
Set pCity = Nothing
End Sub
Private Sub CitySetHome(inpCity As String)
Set pCity = pOLA.GetDefaultFolder(olFolderCities).Items.Find( _
"[NAME] = """ & inpCity & """")
pOLA.HomeCity = pCity
pOLA.CurrentCityIndex = olHomeCity
MsgBox "Home city is now: " & pOLA.HomeCity.Name
Set pCity = Nothing
End Sub
Private Sub Form_Unload(Cancel As Integer)
pOLA.Logoff
Set pOLA = Nothing
End Sub
赤外線転送を使用してアイテムを送信する方法
このサンプルでは、新しく作成した TaskItem を赤外線転送を通じて送信します。
eMbedded Visual Basic で新しい Windows CE プロジェクトを作成します。デフォルトで Form1 が作成されます。
コマンド ボタン (CommandButton) コントロールを Form1 に追加します。
Form1 に次のコードを貼り付けます。
Option Explicit
Dim pOLA As PocketOutlook.Application
Dim pFolder As PocketOutlook.Folder
Dim pTaskItem As PocketOutlook.TaskItem
Const olTaskItem = 3
Const olFolderInfrared = 102
Const olCreateTasks = 3
Private Sub Form_Load()
Set pOLA = CreateObject("PocketOutlook.Application")
pOLA.Logon (Form1.hWnd)
End Sub
Private Sub Command1_Click()
'Set up a task
Set pTaskItem = pOLA.CreateItem(olCreateTasks)
pTaskItem.Subject = "Pick up shoe phone at repair shop"
pTaskItem.StartDate = Now 'today
pTaskItem.DueDate = Now + 1 'tomorrow
pTaskItem.Save
'Ship it over
Set pFolder = pOLA.GetDefaultFolder(olFolderInfrared)
pFolder.AddItemToInfraredFolder olTaskItem, pTaskItem
pFolder.SendToInfrared
Set pFolder = Nothing
Set pTaskItem = Nothing
End Sub
Private Sub Form_Unload(Cancel As Integer)
pOLA.Logoff
Set pOLA = Nothing
End Sub
赤外線転送を使用してアイテムを受信する方法
このサンプルでは、赤外線転送を通じて送信された TaskItem を取り出します。
eMbedded Visual Basic で新しい Windows CE プロジェクトを作成します。デフォルトで Form1 が作成されます。
コマンド ボタン (CommandButton) コントロールを Form1 に追加します。
Form1 に次のコードを貼り付けます。
Option Explicit
Dim pOLA As PocketOutlook.Application
Dim pFolder As PocketOutlook.Folder
Dim pItems As PocketOutlook.Items
Dim pTaskItem As PocketOutlook.TaskItem
Const olFolderTasks = 13
Private Sub Form_Load()
Set pOLA = CreateObject("PocketOutlook.Application")
pOLA.Logon (Form1.hWnd)
End Sub
Private Sub Command1_Click()
'Get the task from Infrared transfer
Set pFolder = pOLA.GetDefaultFolder(olFolderTasks)
Set pItems = pFolder.ReceiveFromInfrared
'Verify we got it
Set pTaskItem = pItems.Item(1)
MsgBox pTaskItem.Subject, vbCritical, "Task Received!"
Set pFolder = Nothing
Set pItems = Nothing
Set pTaskItem = Nothing
End Sub
Private Sub Form_Unload(Cancel As Integer)
pOLA.Logoff
Set pOLA = Nothing
End Sub