2012-11-03 113 views
0

我們爲微軟辦公室開發了一個COM加載項。 我們希望確保我們的加載項在辦公應用程序啓動時加載(意味着沒有人試圖在註冊表中禁用它)。 我們目前的解決方案是,我們正在使用一個外部應用程序,加載項在特定的時間後會與之通信,從第二個辦公應用程序開始算起。如果它沒有通信,那麼我們停止辦公應用程序,在註冊表中驗證我們應該加載並重新啓動它。 這是一個有問題的系統,因爲沒有人可以猜測什麼是合適的等待時間,並且你不想在工作10分鐘後給用戶突然出現錯誤,更不用說對我們來說重要的是加載項將盡快加載。微軟辦公室驗證加載項加載

任何想法?

回答

0

也許是一個骯髒的解決方案,但您可以等到主Outlook窗口的標題從「打開Outlook」更改爲其他內容?

上面的屏幕截圖,從截圖我把在Outlook還在我的機器上加載裁剪。

所以也許輪詢Outlook的進程,得到它的主窗口標題,看看它是否包含開放。 非常髒的解決方案,可能有2個缺陷:

  1. 本地化的Outlook可能會顯示不同的消息。
  2. 您可能會錯過打開的消息,具體取決於查詢進程需要多少時間,獲取主窗口以及您的計時器間隔是多少。

我認爲在「開放」消息消失之後 - 所有加載項應該已經加載,只要它們沒有被禁用。

也許Outlook進程的MainWindowTitle屬性將成爲檢查「打開消息」的屬性。有沒有試過沒:

Process.MainWindowTitle Property - MSDN

更新: 希望這將解決該啓動過程中Outlook正在做一些數據完整性檢查或類似的事情之前發射現有的加載項的情況下,但你應該在考慮這種方法安全之前真的做了很多測試...

希望這有助於,讓我們知道它是否有效,以便我們可以使用它,以防萬一需要它。

0

如果這確實是您的「監護人」應用程序正在做的事情,那麼您可能需要重新考慮該方法。 1.爲什麼要在檢查註冊表之前停止辦公應用程序? 2.如果您的支票已經通過但加載項仍未運行,您會怎麼做?

我建議是這樣的:1。 如果是這樣重要的是要有外接運行,與您的應用程序替換辦公應用程序的快捷方式(如果可以的話,如企業環境) 2.檢查註冊表之前你關閉辦公室的應用程序,所以你可以做到這一點,而不用等待 3。嘗試模仿你的「guradian」內部應用程序辦公應用程序 - 創建實例,並檢查是否加載項加載

對於任何辦法,這聽起來像任何一個企業的規則執行,在這種情況下,你有過的快捷方式和辦公應用程序安裝控制,或者是一個過度強加的商業軟件,在這種情況下 - 認爲(即這是正確的方法)。

HTH