2010-03-31 83 views
2

我有一個用C#和.Net 2.0編寫的簡單應用程序,它在循環中顯示多個PowerPoint 2003文件。 (它將用於我們餐廳的信息板)應用程序在我的開發機器上正常工作,但是當我將它部署到另一臺機器時,我註冊的SlideShowNextSlide和PresentationClose事件從未被解僱。我嘗試用這種方法註冊事件。PowerPoint.Application不會引發C中的事件#

private void InitPPT() 
    { 
     app.SlideShowNextSlide += new Microsoft.Office.Interop.PowerPoint.EApplication_SlideShowNextSlideEventHandler(app_SlideShowNextSlide); 
     app.PresentationClose += new Microsoft.Office.Interop.PowerPoint.EApplication_PresentationCloseEventHandler(app_PresentationClose); 
     app.SlideShowEnd += new Microsoft.Office.Interop.PowerPoint.EApplication_SlideShowEndEventHandler(app_PresentationClose); 
    } 

而且用這種方法,我發現here

private void InitPPT() 
    { 
     IConnectionPointContainer oConnPointContainer = (IConnectionPointContainer)app; 
     Guid guid = typeof(Microsoft.Office.Interop.PowerPoint.EApplication).GUID; 
     oConnPointContainer.FindConnectionPoint(ref guid, out m_oConnectionPoint); 
     m_oConnectionPoint.Advise(this, out m_Cookie);    
    } 

我是否需要註冊客戶端機器上的一些dll的還是我失去了一些東西。

+0

我檢查了客戶端機器,並在GAC中註冊了Microsoft.Office.Interop.PowerPoint。 – AdmSteck 2010-03-31 17:21:34

+0

我想我可能已經發現提出一個新問題的問題的一部分。我的應用正在模擬不同的用戶帳戶,因此它可以訪問網絡。如果我的應用程序和PowerPoint未在同一個帳戶下運行,我認爲它無法從PowerPoint接收事件。問題是如何讓PowerPoint在同一個帳戶下運行。 – AdmSteck 2010-04-01 14:12:29

回答

1

我認爲這是由於我試圖從本地用戶帳戶運行我的應用程序,但模擬一個域帳戶,所以我可以訪問網絡驅動器。我更改了我的應用程序,因此它只在執行網絡操作時模擬了域帳戶,而不是在應用程序啓動時模擬。