2013-10-03 37 views
1

我想捕獲一些Outlook事件(這是一個單獨的應用程序而不是加載項)。爲此,我有一個名爲CApplication的類定義爲:class CApplication : public COleDispatchDriver和一個名爲CAppEventListener的類:class CAppEventListener : public IDispatch。我在CreateDispatch方法Outlook - CreateDispatch異常

m_pAppEventListener = new CAppEventListener(); 
m_pAppEventListener->CheckOutlookInProcess(); 
COleException l_oleExcep; 

if(!m_pAppEventListener->m_OutlookApplicationInternal.CreateDispatch(_T("Outlook.Application"),&l_oleExcep)) 
{ 
    CString szMsg; 
    szMsg.Format(_T("CreateDispatch() failed with error 0x%08lx"), l_oleExcep.m_sc); 
    AfxMessageBox(szMsg, MB_SETFOREGROUND); 
    return 0; 
} 

得到一個例外,這裏是消息框,顯示異常代碼。有誰知道它從哪裏來?

enter image description here

+0

這是CO_E_SERVER_EXEC_FAILURE,「服務器執行失敗」。 Outlook中的某些內容非常錯誤,請確保您可以手動啓動它。確保它不是因爲你已經有一百份正在運行。 –

+0

@hans是的,我可以手動啓動,我只有一個實例! – Kira

回答

1

CO_E_SERVER_EXEC_FAILURE我通常提出,如果您的應用程序和Outlook的安全上下文是不同的。

您的應用程序是否運行常規GUI應用程序或任務/服務?是應用程序運行與提升的安全特權(以管理員身份運行)?

+0

這是一個MFC應用程序,但我沒有使用GUI,輸出寫入文件。我試着以管理員身份運行它,但我看不到任何區別 – Kira

+0

@Dimtry我注意到,當我在系統會話中運行我的應用程序時,它可以工作。我認爲你是對的,這是關於安全特權的,但是請你給我更多的解釋。我想爲我的應用程序創建一個安裝程序,應該設置什麼樣的配置,以便應用程序無需任何明顯的干預。提前致謝。 – Kira

+0

你的意思是你的代碼運行在安裝程序的安全上下文中(這是一項服務)?請勿在安裝程序中觸摸Outlook對象模型。無論你需要做什麼,當你的應用/插件/等。第一次運行。 –