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

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