![](/img/trans.png)
[英]C# VSTO Outlook 2007: <dll> is not a valid Office Add-in
[英]C# Get running Outlook instance in VSTO add-in
我正在嘗試在Excel加載項中獲取Outlook Application對象。
如果有一個正在運行的Outlook實例,則應該得到它;如果沒有,則應該使用Outlook對象模型創建一個。
這是我現在擁有的代碼:
public static Outlook.Application GetApplicationObject()
{
Outlook.Application application = null;
if (Process.GetProcessesByName("OUTLOOK").Count() > 0)
{
application = Marshal.GetActiveObject("Outlook.Application") as Outlook.Application;
}
else
{
application = new Outlook.Application();
}
return application;
}
我的問題:它找到Outlook進程,但找不到它們,並拋出以下錯誤消息:
操作不可用(來自HRESULT的異常:0x800401E3(MK_E_UNAVAILABLE))
我嘗試逐步調試它,並監視任務管理器。 我可以看到我有一個Outlook實例,但這只是任務欄右側的一個圖標。 這是否意味着實例尚未完全加載,並且無法從中獲取Application對象?
我最終修改了我的代碼,並將if-else分為2個try-catches,並帶有各自的返回值,但是我仍然認為上面的代碼應該可用。
Outlook是單例,因此new Outlook.Application()
將始終有效-如果它已經在運行,則將獲得該正在運行的對象。
確保兩個應用程序(Excel和Outlook)都在相同的安全上下文中運行。 任一應用程序是否都以提升的特權運行(以管理員身份運行)?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.