2009-10-15 74 views
1

我正在使用Windows上的iTunes COM API。我想管理實例化iTunes對象(必須啓動iTunes本身)時發生的巨大延遲。我希望有一種方法來確定以下內容:檢測COM對象是否已註冊或實例化(iTunes)

  • 如果給定的CLSID註冊系統(編程)
  • 如果已經創建了一個給定的CLSID的一個實例上

使用這些,然後我可以提供有用的反饋,如「iTunes未安裝」或「請稍候,而iTunes開始 - 這需要一些時間」。

回答

0
  1. 創建iTunes COM對象,如果失敗,則iTunes未安裝,並且該函數應返回相當快。
  2. 在創建iTunes對象之前創建其他線程,讓線程等待某個事件,一旦創建了iTunes對象即表示該事件。
  3. 在線程中,如果在3秒內沒有選擇事件,則顯示「Please wait」,然後等待這個事件再次一次。

這或多或少是你應該做的流程。

+0

Urk。這將起作用,但與優雅的距離還很遠。很好(謝謝) – 2009-10-15 18:25:55

0

確定給定CLSID的直接方式是在沒有CoCreating的情況下注冊,它是在註冊表中檢查HKCR\ReadableName\CLSID。這也是Windows從中獲取信息的地方。