[英]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.