2009-10-15 6 views
1

Я работаю с ITunes COM API в Windows. Я хотел бы управлять огромной задержкой, возникающей при создании объекта iTunes (который должен запустить iTunes). Я надеялся, что есть способ, чтобы определить следующее:Обнаружение, если COM-объект зарегистрирован или создан (iTunes)

  • если данный CLSID зарегистрирован в системе (Programatically)
  • если экземпляр данного CLSID уже создан

Использования эти, я мог бы предложить полезные отзывы, такие как «iTunes не установлен» или «Подождите, пока iTunes запущен - это займет несколько минут».

ответ

0
  1. Создайте объект ITunes COM, если он не работает, iTunes не установлен и функция должна возвращаться довольно быстро.
  2. Создайте еще нить, прежде чем создавать объект iTunes, пусть поток ожидает какое-то событие, как только этот объект iTunes будет создан для сигнала этого события.
  3. В теме, если в течение 3 секунд событие не выделено, тогда отобразите «Подождите», а затем дождитесь события снова на этот раз навсегда.

Это более или менее поток, который вы должны делать.

+0

Urk. Это будет работать, но это долгий путь от элегантности. О, хорошо (и спасибо) –

0

Простой способ определения того, что данный CLSID зарегистрирован без CoCreating, заключается в регистрации в реестре для HKCR\ReadableName\CLSID. То же самое происходит и с окнами.