Outlook Add-in(COM加載項)技術指南
?
2.1.2
.2.
IDTExtensibility2_OnDisconnection
事件
OnDisconnection
事件中
,
我們銷毀所有的全局對象
。
2.1.2
.3.
IDTExtensibility2_OnStartupComplete
事件
OnStartupComplete
事件主要的工作就是,創建工具欄和按鈕,如果它們不存在的話。
我們首先搜索
Explorer
對象的
CommandBars
集合
,
以察看我們的
“
短信速遞
”
工具欄是否存在。如果找到該工具欄,則只需使之可見。
如果沒有找到我們的工具欄,那么我們將創建工具欄:
通過傳遞命令欄的名稱及
Temporary
參數,代碼將把新的
CommandBar
對象添加到
CommandBars
集合中。
Temporary
參數指出
Outlook
應該在
Outlook
會話間保持命令欄。然后,代碼開始創建命令上的按鈕。
為了創建按鈕,代碼將使用
CommandBars
對象的
Controls
集合。
然后,代碼將把
2
個按鈕控件添加到集合中。控件類型是由
msoControlButton
常量來標識的。
代碼還將為所有控件傳遞
ID 1
;表示這個控件是自定義控件而不是內置控件。
代碼還將傳遞
Temporary
參數并將它設置為
False
,以使
Outlook
在會話間保持按鈕。
代碼接收到來自于
Control
集合
Add
方法的
CommandBarButton
對象之后,它將開始設置
CommandBarButton
對象的屬性:
u
??????
Caption
屬性:控件的默認屏幕提示;
u
??????
FaceId
屬性:指定按鈕的外觀。
u
??????
Style
屬性:比如,顯示按鈕外觀和標題文本的
msoButtonIconAndCaption
。
您看到,我們前面聲明
g_oCreateSMSBHandler
使用
WithEvents
關鍵詞,被聲明為
Office.CommandBarButton
,
它指出
g_oCreateSMSBHandler
用來響應
CommandBarButton
的事件。
2.1.2
.4.
IDTExtensibility2_OnBeginShutdown
事件
OnBeginShutdown
事件中
,
我們銷毀所有的全局對象
。
2.2.
全局引用的變量
在
VB
中,我們需要使用一些
Outlook
中的對象模型。下面我們一一列出:
2.2.1
.Application
對象
這是整個模型的根對象。
根對象提供對其他對象模型的訪問。在
Outlook
中使用
VBA
時,
Application
對象被隱含聲明,
這樣您可以選擇是否使用
Application
關鍵字。
2.2.2
.NameSpace
對象
用于訪問存儲項目(如文件夾)。“
MAPI
”是唯一可以使用的名稱空間。
2.2.3
.Explorer
對象
這是顯示
Outlook
項目集合的默認界面。每個不同的項目類型都有不同的瀏覽器。
2.2.4
.CommandBars
集合
在
Office
應用程序中,盡管菜單和工具欄按鈕看上去不太一樣,但實質上它們是相同類型的對象。
CommandBars
集合包含程序中的所有命令條,如:工具條和菜單條。
每一個
CommandBars
集合都有一個
CommandBar
對象和它對應,
CommandBar
對象可以包含其它的
CommandBar
對象,這些對象是作為按鈕或菜單命令來用的。每一個
CommandBar
都將通過
CommandBarControls
對象被引用,
CommandBarControls
又可以包含一組
CommandBarControl
對象。每一個
CommandBarControl
可以包含一個
CommandBar
對象,并可以通過它來存取控件屬性。每一個
CommandBarControl
對象,實際是對應
CommandBarControls
中的控件集合。
CommandBarControl
可以有三種表現形式:
n
????????
彈出式
(CommandBarPopup)
:
相當于菜單條的一個菜單項
?
n
????????
組合框
(CommandBarComboBox)
:類似于工具條中組合框控件。它包括一個工具欄和緊接著工具欄的一個下拉箭頭。單擊該按鈕,將顯示出更多的帶圖標的菜單命令。
n
????????
按鈕
(CommandBarButton)
:相當于標準的工具欄按鈕,即帶有圖標的按鈕。
2.2.5
.Items
集合
Items
對象集合包括指定文件夾中所有
Item
條目對象。其中,
Item
對象用于包含特定的
Outlook
數據,例如電子郵件消息、約會或聯系人。
?
????????
Outlook.AppointmentItem
??
日程的條目對象
?
????????
Outlook.ContactItem
??????
?
聯系人的條目對象
?
????????
Outlook.MailItem
?????????
?
郵件的條目對象
?
????????
Outlook.NoteItem
???????
??
?
便箋的條目對象
2.2.6
.Selection
集合
???
Selection
對象包括在用戶界面中用戶選定的項目組。
2.3.
處理按鈕事件
在
VB
中,我們需要填寫類似于“
g_oCreateSMSBHandler_Click
”函數,對按鈕的點擊作出響應。下面我們一一列出兩個按鈕的事件:
2.3.1
.
g_oCreateSMSBHandler_Click
事件
這個按鈕的名稱是“創建短信”
。
“聯系人列表”將從您的
Outlook
聯系人中讀取,只顯示那些提供了移動電話號碼的聯系人。您點擊某一個聯系人,我們把這個聯系人加入“收信人手機號碼”的編輯框中。
本事件主要的事情就是,彈出一個“發送短信”的對話框。并取出聯系人中設置了移動號碼的。
其他的細節我們就不再介紹了,介紹一下默認
Outlook
聯系人的獲取問題:
首先我們通過
Set olContacts = g_oNS.GetDefaultFolder(olFolderContacts).Items
獲得默認的聯系人文件夾的
Items
集合。
然后,用
For Each olContact In olContacts
遍歷這個
Items
集合。這個集合中的每一個對象都應該是一個“
Outlook.ContactItem
”
Item
對象。所以我們可以獲得這個
Item
對象的顯示名稱和移動手機號碼。
我們只顯示那些擁有移動手機號碼的聯系人。
代碼如下所示:
'
準備取出聯系人中帶有移動號碼的作為收信人
:
???
'
???
Dim olContacts As Outlook.Items
???
Dim olContact As Outlook.ContactItem
???
'
???
' GetDefaultFolder
方法基于
FolderType
參數返回默認的文件夾
???
'
(例如,
olFolderInbox
常量將“收件箱”文件夾返回給當前登錄的用戶)。
???
'
我們現在選擇進入的是:
???
'
??
包含
ContactItem
對象和
DistListItem
對象的“聯系人”文件夾
(olFolderContacts)
。
?
??
Set olContacts = g_oNS.GetDefaultFolder(olFolderContacts).Items
???
frmMenuMain.listContact.Clear
???
???
Dim nIndex As Integer
???
Dim szContactItem As String
???
nIndex = 0
???
On Error Resume Next
???
'
遍歷每一個聯系人:
???
For Each olContact In olContacts
???????
If Len(olContact.MobileTelephoneNumber) = 11 Then
???????????
'
聯系人的顯示名稱:
???????????
szContactItem = Replace(olContact.FileAs, "[", "")
???????????
szContactItem = Replace(szContactItem, "]", "")
???????????
'
聯系人的移動號碼:
???????????
frmMenuMain.listContact.AddItem szContactItem & "[" & _
???????????????????????????????????????????
olContact.MobileTelephoneNumber & "]", nIndex
???????????
nIndex = nIndex + 1
???????
End If
???
Next
???
On Error GoTo 0
|
[
版權聲明:
第二章部分文字引用自《
Programming Microsoft Outlook and Exchange
》一書,該書作者
Thomas Rizzo
,特此聲明
]
?
本文檔僅供參考。本文檔所包含的信息代表了在發布之日, zhengyun 對所討論問題的當前看法, zhengyun 不保證所給信息在發布之日以后的準確性。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=12756
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
