簡體   English   中英

如何以編程方式控制Outlook加載項?

[英]How to control Outlook Add-ins programatically?

我下載了一個Outlook加載項,安裝后在功能區上創建新選項卡,並在新選項卡上創建按鈕。 我想在沒有ui交互的情況下按下這些按鈕。 我嘗試查詢已安裝的加載項,但無法控制:

    static void Main( string[] args )
    {
        Microsoft.Office.Interop.Outlook.ApplicationClass app = new Microsoft.Office.Interop.Outlook.ApplicationClass();
        for ( int c = 1; c < app.COMAddIns.Count; c++ )
        {
            Console.WriteLine( app.COMAddIns.Item( c ).Description );
            if ( app.COMAddIns.Item( c ).Description.StartsWith( "XXX" ) )
            {
                string guid = app.COMAddIns.Item( c ).Guid; // Okay
                object obj = app.COMAddIns.Item( c ).Object; // null
                object parent = app.COMAddIns.Item( c ).Parent; // ApplicaionClass
                string progId = app.COMAddIns.Item( c ).ProgId; // Okay
            }
        }
    }

但這是可能的,錯誤的方式。 可能查詢功能區控件的按鈕?

你不能

功能區中按鈕的操作不公開。 當您位於同一外接程序中時,甚至不能以編程方式調用按鈕本身的click事件。 (您可以調用事件處理程序,但這只是.NET的所有方面,而不會干擾VSTO / Outlook。

沒有Office功能區控件公開用於程序訪問。

您可以使用UI自動化API ,也可以使用Redemption及其SafeRibbon對象(由SafeExplorer .Ribbon屬性公開)-它允許枚舉和執行Outlook功能區控件:

 set sInspector = CreateObject("Redemption.SafeInspector")
 sInspector.Item = Application.ActiveInspector
 set Ribbon = sInspector.Ribbon
 oldActiveTab = Ribbon.ActiveTab 'remember the currently selected tab
 Ribbon.ActiveTab = "Task"
 set Control = Ribbon.Controls("Assign Task")
 Control.Execute
 Ribbon.ActiveTab = oldActiveTab 'restore the active tab

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM