Здравствуйте, ZAMUNDA, Вы писали:
GS>><CLSID> — строка, идентифицирующая объект. В хелпе не указана. Нужна библиотека типов.
ZAM>CLSID -- это 128-битная (32-байтная) структура описывающая объект, которую ещё можно строкой вида "{########-####-####-####-############}" представить. А вот CreateObject принимает ProgId, можете убедиться в этом сами (цитата MSDN):
Да, признаю, ошибочка вышла, привык, что в CComPtr можно вперемежку ставить что прог, что классайди, вот что-то такое про CreateObject померещилось
ZAM>Кстати в хелпнике, который по ссылке в первой мессаге имееЦЦа, есть указание что интерфейс называется IRunpadShell. Можно в реестре поискать значение "IRunpadShell" (значение имеется ввиду искать только 'Data') и наткнуться на адрес типа HKEY_CLASSES_ROOT\Interface\{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}, а потом можна зайти на адрес <найденный адрес>\TypeLib скопировать оттуда значение (Default) и поискать ключ с таким названием; в ём , как я уже и сказал выше, отыщешь ProgID.
И это, пожалуй, правильно, поскольку в библиотеке типов прогайди не пишут, оно может быть в регистрационном скрипте в экзешнике (и длл-нике), влинкованном, но совершенно не обязательно.
GS>>Далее, не всякий COM-сервер можно вызывать из vbs, а только дуальные и диспатчевые. Какой у тебя — можно узнать по библиотеке типов. ZAM>А можно просто попробовать его создать, через CreateObject.
Вот только если не получится, не будешь знать — не то интерфейс не диспатчный, не то не дефолтный, а не то параметры не той системы. Кстати, все заметили в хелпе оговорочку насчет того, что функции не юникодные?