|
|
Tech Note 03l: Accessing Pocket Outlook FilesSeptember 08, 2007© 2010 NS BASIC Corporation. All rights reserved. |
IMPORTANT: Support for accessing the Pocket Outlook Object Model from ActiveX was officially dropped in Windows CE 4.0. However, it continued to to work until part way through Windows CE 5.0. The highest version of PimStore.dll that works appears to be 5.01.14847. As of this time, there is no workaround. Possibilities are to use the DECLARE statement to call the API functions directly or to create a DLL wrapper that can be called from NS Basic/CE.
Using the Pocket Outlook Object Model (POOM) from Microsoft, it's easy to read and write to the built in databases for
You need to download the complete documentation and files from Microsoft's website. In this Tech Note, we'll give you a summary of what you need to know to use POOM from NS Basic/CE. The documentation provided by Microsoft is written from the viewpoint of a Visual C++ programmer. You will find that doing the same functions from NS Basic/CE is much easier!
Installation
If your device doesn't already have the files in ROM, you will need to move the appropriate version of PIMStore_xxx.dll from the release files to your device and rename it to PIMstore.dll. After that, it will need to be registered.
On HPC and HPC Pro devices, tap [start]...[run], then enter the command
regsvrce.exe \windows\pimstore.dll
You should get a message back that it has been registered successfully.
Basic Principles
POOM is an object, much like the other objects NS Basic/CE uses. The major difference is that in addition to having properties and methods, it also has objects within it. The main object has 4 objects inside it. Each one is called a Folder Object. The Folder Objects are Tasks, Appointments, Contacts, and Cities. The getDefaultFolder method is used to get a Folder Object.
Each of the Folder Objects has properties and methods (like any object) and an object called Items within it. The Items object has a property called count, which says how many individual items there are, and an array of those items which is an collection object called Items.
These items are the actual data. Each of these items is an object. For example, each name in Contacts is an object, referenced in the Items array. The values for the item are stored as properties: for example, lastname, title and Birthday are all properties of a Contact Item Object.
To sum up, there are 4 levels of objects set up as a hierarchy:
1. POOM Object (IPOutlookApp)
2. Folder Objects: Tasks, Appointments, Contacts, Cities (IFolder)
3. Items Object: An array with each Item (IPOutlookItemCollection)
4. Item Object (ICity, IContact, ITask or IAppointment)
Hint: if you have an object and you wonder what kind it is, do typename(object). It will return its type, something like ICity or IFolder.)
1. POOM Object (IPOutlookApp)
You create the POOM object using the AddObject statement as follows:
addobject "pocketOutlook.application","pol"set tasks=pol.getdefaultfolder(13)
pol.logon
'do your processing here
pol.logoff
|
Name |
Type |
Notes |
|
Property |
The current version of POOM |
|
Property |
0 or 1, depending on whether the user is in the home or visiting city. |
|
Property |
The home city. |
|
Property |
The visiting city. |
|
Property |
|
|
Method |
returns the selected object. Values for N are: |
|
Method |
logs user on to POOM. This is required before you can do anything. |
|
Method |
logs user off. This has to be done at the end of your program. If you fail to do this, you will get an out of memory error next time you run the program. Quitting the BASIC environment will clear this. |
2. Folder Objects (Ifolder)
This object is used to get the collection of items.
set taskItems=tasks.items
|
Name |
Type |
Notes |
|
property |
Gets the Items Object collection. |
3. Items Object: (IPOutlookItemCollection)
This object is used to access the individual items. The items are different objects, depending on the folder they come from. They are ICity, IContact, ITask and IAppointment.
for i=1 to taskItems.count
set taskItem=taskItems.item(i)
print taskItem.subject
next
|
Name |
Type |
Notes |
|
method |
returns element i of the Items Object |
|
property |
the number of items in the Items Object |
|
property |
Appointments only. Include all recurrances of this item? Could be infinite! |
|
method |
create a new item. Does not get kept until you do a Save |
|
method |
remove item i |
|
method |
See Micosoft docs |
|
method |
See Micosoft docs |
|
method |
See Micosoft docs |
|
method |
save the current item |
|
method |
delete the current item |
|
method |
make a copy of the current item |
|
method |
display the current item |
4a. Item Object: ICity
The ICity Object has the following properties:
Print cityItem.airportcode
CityItem.areaCode="416"
|
Property |
Type |
|
AirportCode |
String |
|
AreaCode |
String |
|
Country |
String |
|
CountryPhoneCode |
String |
|
InROM |
Boolean (read only) |
|
Latitude |
long |
|
Longitude |
long |
|
Name |
String |
|
TimezoneIndex |
long |
4b. Item Object: IContact
|
Property |
Type |
|
Anniversary |
Date |
|
AssistantName |
String |
|
AssistantTelephoneNumber |
String |
|
Birthday |
Date |
|
Body |
String |
|
Business2TelephoneNumber |
String |
|
BusinessAddressCity |
String |
|
BusinessAddressCountry |
String |
|
BusinessAddressPostalCode |
String |
|
BusinessAddressState |
String |
|
BusinessAddressStreet |
String |
|
BusinessFaxNumber |
String |
|
BusinessTelephoneNumber |
String |
|
CarTelephoneNumber |
String |
|
Categories |
String |
|
Children |
String |
|
CompanyName |
String |
|
Department |
String |
|
Email1Address |
String |
|
Email2Address |
String |
|
Email3Address |
String |
|
FileAs |
String |
|
FirstName |
String |
|
Home2TelephoneNumber |
String |
|
HomeAddressCity |
String |
|
HomeAddressCountry |
String |
|
HomeAddressPostalCode |
String |
|
HomeAddressState |
String |
|
HomeAddressStreet |
String |
|
HomeFaxNumber |
String |
|
HomeTelephoneNumber |
String |
|
JobTitle |
String |
|
LastName |
String |
|
MiddleName |
String |
|
MobileTelephoneNumber |
String |
|
OfficeLocation |
String |
|
OtherAddressCity |
String |
|
OtherAddressCountry |
String |
|
OtherAddressPostalCode |
String |
|
OtherAddressState |
String |
|
OtherAddressStreet |
String |
|
PagerNumber |
String |
|
RadioTelephoneNumber |
String |
|
Spouse |
String |
|
Suffix |
String |
|
Title |
String |
|
WebPage |
String |
Check Microsoft's docs for information on ITask specific methods.
|
Property |
Type |
|
Body |
String |
|
Categories |
String |
|
Complete |
Boolean |
|
DateCompleted |
Date read only |
|
DueDate |
Date |
|
Importance |
long (0,1,2) |
|
IsRecurring |
Boolean read only |
|
ReminderOptions |
long |
|
ReminderSet |
Boolean |
|
ReminderSoundFile |
String |
|
ReminderTime |
Date |
|
Sensitivity |
long (0 or 2) |
|
StartDate |
Date |
|
Subject |
String |
|
TeamTask |
Boolean |
4D. Item Object: IAppointment
Check Microsoft documentation for IAppointment specific methods.
|
Property |
Type |
|
Subject |
String |
|
Location |
String |
|
Categories |
String |
|
Start |
Date |
|
Duration |
long |
|
End |
Date |
|
AllDayEvent |
Boolean |
|
IsRecurring |
Boolean read only |
|
MeetingStatus |
Long read only |
|
Sensitivity |
0=Normal, 1=Private |
|
BusyStatus |
0=Free, 1=Tentative, 2=Busy, 3=OutOfOffice |
|
ReminderSet |
Boolean |
|
ReminderSoundFile |
String |
|
ReminderOptions |
long |
|
ReminderMinutesBeforeStart |
long |
|
Body |
String |
REM Demonstrate use of Pocket Outlook
addobject "pocketoutlook.application","pol"
pol.logon()
on error resume next
print "Poom Version:" & pol.version
print "Current City:" & pol.currentCityIndex
print "Home City:" & pol.HomeCity.name
print "Visiting City:" & pol.VisitingCity.name
print "Partnered with Outlook? " & pol.outlookCompatible
'get tasks
set tasks=pol.getdefaultfolder(13)
set taskItems=tasks.items
print "Tasks (" & taskItems.count & ")"
for i=1 to taskItems.count
set taskItem=taskItems.item(i)
print taskItem.subject
next
'create a new task
set newTask=taskItems.add
print typename(newtask)
newTask.subject="New task created by NS Basic/CE"
newTask.save
'get contacts
set contacts=pol.getdefaultfolder(10)
set contactItems=contacts.items
print "Contacts (" & contactItems.count & ")"
for i=1 to contactItems.count
set contactItem=contactItems.item(i)
print contactItem.lastname
next
'get appointments
set appointments=pol.getdefaultfolder(9)
set appointmentItems=appointments.items
print "Appointments (" & appointmentItems.count & ")"
for i=1 to appointmentItems.count
set appointmentItem=appointmentItems.item(i)
print appointmentItem.subject
next
'get cities
set cities=pol.getdefaultfolder(101)
set cityItems=cities.items
print "Cities (" & cityItems.count & ")"
for i=1 to 10
set cityItem=cityItems.item(i)
print cityItem.name
next
pol.logoff