• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    用OLE自動化Outlook

    發布: 2007-7-14 20:28 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 27次 | 進入軟件測試論壇討論

    領測軟件測試網 作者: 揚眉

        OLE Automation能夠讓你輕松的在你的應用程序中引入像Word,Excel等大型應用軟件的功能。通過這些程序暴露在外部的編程接口(包括函數和方法等),你可以很容易的得到那些大型軟件的強的功能,大大的擴展你的程序的實用性。

       當然,我不會在這兒教你如何去編寫一個病毒程序,但是我會告訴你,如何利用OLE的強大功能來實現對Outlook的自動化操作,比如自動的發郵件,讀取新聞組等等。如果你確實對病毒更感興趣,寫好了也不要把它發布出來,否則對大家都沒有什么好處。

       什么是OLE Automation?

       這兒可以給出一個OLE Automation的一個很簡單的例子:可以操作支持OLE特性的應用程序暴露在外部的可編程對象的能力。大部分的這些可編程對象都被內嵌在某種宏語言中,比如VBA,它就是一種使用在Microsoft Office應用程序中的宏語言。

       VBA(Visual Basic for Application)是VB的一個子集,所有的Office的最近的幾個版本都使用了OLE Automation,所以你可以用VBA來操作幾乎每個Office應用程序的每個部分。

       下面的這個Visual Basic 函數可以用來在Outlook中新建一封郵件,要想使這個例子能夠正常的工作,你的電腦上必須安裝有Outlook 97或更高版的Outlook。

       Public Function CreateMessage()
       注釋:建立對Outlook中對象的引用
       Dim objOutlook As New Outlook.Application
       Dim objOutlookMsg As Outlook.MailItem
       注釋:建立新郵件
       Set objOutlookMsg = objOutlook.CreateItem(olMailItem)
       objOutlookMsg.Display
       Set objOutlook = Nothing
       End Function

       首先,你必須告訴Visual Basic什么是“Outlook.Application”對象。所以你必須為你的應用程序建立一個對Outlook對象庫的引用。你可以通過點擊Visual Basic的“工程”菜單中的“引用”菜單項,然后選者Microsoft Outlook對象庫來實現這一點。這樣就告訴了Visual Basic在哪兒能夠找到OLE服務器。在這個例子中,OLE服務器就是Outlook,而客戶端就是你的VB應用程序。

       上面的例子用到了一個稱為早期綁定(early-binding)的技巧來設置對對象的引用。與之相對的還有晚期綁定(late-binding),它設置對象引用的代碼如下所敘:

       Public Function CreateMessage()
       Dim objOutlook As Object
       Dim objOutlookMsg As Object
       Set objOutlook = CreateObject("Outlook.Application")

       基于以下的幾個原因,早期綁定在一般來說要筆晚期綁定要好一些:

       * 早期綁定能夠讓你是用到VB的IntelliSense特性,它可以自動的為你做對象的一般拼寫檢查,自動列出相關對象的屬性和方法,以及諸方法的參數。這為你的編碼過程提供了很大的方便。

       * 早期綁定運行的速度要必晚期綁定快一些,因為,具體的內存非配動作是要到運行時才動態的分配。而且,當把對象申明為一個Object的類型時,VB并不能夠確定具體的對象類型,這樣,如果在其中引用了非法的屬性和方法,VB也不能夠報錯,造成運行時錯誤。

       雖然晚期綁定比早期綁定要慢而且不是很安全,但有時它又是必須的。在某些情況下,非要等到運行時才能夠確定對象的類型,這兒后就非得使用晚期綁定不可了。但總的來說,能夠使用早期綁定的話就應該盡量的使用。

       郵件列表

       在VB中有專門為郵件處理而編寫的控件,但我們在這兒要拋棄他們。我們談論的是OLE。有了上面的那個例子作為引導,用VB和Outlook來編制郵件列表的程序應該是很簡單的了。

       通過一個數據庫的協助,你可以很容易利用OLE實現一個郵件列表。VB支持大部分主流的數據庫格式,這兒你不妨就用Access吧,在VB中可以用DAO來對數據庫進行操作。DAO為你提供了一個比較友好的數據庫編程對象模型,可以用較少的代碼實現你想要的大部分功能。雖然它有一些局限性,但對于這樣的小應用已是綽綽有余的了。因為它也是以對象庫的形式被VB所引用的,所以在使用它之前也必須在工程加上對其的引用。 在開始之前,我們需要一個Access數據庫,其中包含了郵件列表的客戶信息。數據庫的文件名為Contacts.mdb,內有一個Contacts表。包含了關于客戶的姓名,電子郵件地址,城市等等信息,由于結構比較簡單,這兒就不列出了。

       新建一個Visual Basic標準EXE工程,然后為工程添加Microsoft Outlook和Microsoft DAO這兩個對象庫的引用,DAO對象庫能夠讓你操作Microsoft的Jet數據庫引擎。

       打開工程菜單,點擊On the Project menu, click on Components and select the Windows Common Controls 1 library.

       添加一個命令按鈕和一個進度條道窗體上。

       在Command1的click事件處理部分,輸入下面的代碼:

       Private Sub Command1_Click()
       Dim Dbs As Database
       Dim Rst As Recordset
       Dim objOutlook As New Outlook.Application
       Dim objOutlookMsg As Outlook.MailItem
       注釋:打開數據庫
       Set Dbs = OpenDatabase(App.Path & "Contacts.mdb")
       Set Rst = Dbs.OpenRecordset("Contacts")
       Rst.MoveFirst
       ProgressBar1.Visible = True

       注釋:對數據表中的每個數據進行操作
       Do Until Rst.EOF
       ProgressBar1.Value = Rst.PercentPosition

       注釋:建立新的郵件
       Set objOutlookMsg = objOutlook.CreateItem(olMailItem)
       With objOutlookMsg
       .To = Rst!email 注釋:給出收信人的郵件地址
       .Subject = "Address Check" 注釋:給出郵件的主題
       注釋:下面是郵件的正文部分
       .body = "Dear " & Rst!Title & " " & Rst!LastName & vbNewLine & vbNewLine
       .body = .body & "This is an email to confirm your address. "
       .body = .body & "Please check the address below to make sure "
       .body = .body & "that it is correct" & vbNewLine & vbNewLine
       .body = .body & Rst!Address & vbNewLine & Rst!City & vbNewLine
       .body = .body & Rst!StateOrProvince & vbNewLine & Rst!PostalCode
       .body = .body & vbNewLine & Rst!Country & vbNewLine & vbNewLine
       .body = .body & "Tel: " & Rst!PhoneNumber
       .Importance = olImportanceHigh
       .Send
       End With

       注釋:取消對對象的引用
       Set objOutlookMsg = Nothing

       Rst.MoveNext
       Loop

       ProgressBar1.Visible = False

       注釋:取消對對象的引用,這一步很重要。
       Set objOutlook = Nothing

       注釋:關閉數據庫Dbs.Close
       MsgBox "Auto Email Complete", vbInformation

       Set Dbs = Nothing
       Set Rst = Nothing
       End Sub


       在你按下開始鍵之后,所有再數據庫中的客戶都被發送了一封確認信,你可以通過檢查發件箱來發現這一點。

       最后,關于應用程序的發布要做一點說明。如果你決定在你的應用程序中使用諸如Outlook這樣的OLE服務器,你就必須考慮到,應用程序的最終使用者可能并沒有在電腦中安裝Outlook,或者安裝的版本不符,這樣的話程序式不能夠運行的。但是,你還是可以在你自己的電腦上開發一些Automation的程序,有時這會為你節約大量的時間和精力。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>