1 (изменено: jite, 2010-11-17 11:36:41)

Тема: WSH: CreateObject("...") «Огласите весь список пжалуста!»

В недавней теме узнал, что через CreateObject() можно создавать не только известные Scripting.FileSystemObject, WScript.Shell, WScript.Network, чуть менее известные Shell.Application, InternetExplorer.Application, Word.Application, но и некий htmlfile.

Точно! Я забыл про него.

B судя по отзывам, это что-то само собой разумеющееся. Все их знают, я один не знаю?

Есть ли где-нибудь список таких объектов? Откуда можно узнать о свойствах и методах?

В MSDN есть описание объектов InternetExplorer и WebBrowser для VB.NET. Вероятно, все это будет работать и под WSH?

2

Re: WSH: CreateObject("...") «Огласите весь список пжалуста!»

Как такового, списка нет. Узнать можно с помощью: WSH: Браузеры объектов автоматизации (OLE/COM/Automation). Иногда можно откопать достаточно своеобразные вещи: VBScript: некоторые интересные объекты Automation.

3 (изменено: jite, 2010-11-18 19:26:24)

Re: WSH: CreateObject("...") «Огласите весь список пжалуста!»

Ознакомился с большим интересом. Спасибо!
Но откуда же брать имя собственно для CreateObject()?
В примере с COMPATUILib это было "CompatUI.Util.1". Такое нашел только в TypeLib Browser 2.05: кн. Trees, CoClasses\Util, справа ProgID.
Оно?

Создатели упомянутого браузера также сообщают о возможности использовать при создании CLSIDы:

The file  TB_COM32.INC  contains some important wrapper functions, such TB_CreateObject, that lets you to create instances of any object passing his ProgID or ClsID...

Но это не срабатывает:

Set objUtil = WScript.CreateObject("{0355854A-7F23-47E2-B7C3-97EE8DD42CD8}") 'CLSID Util

Что имелось в виду?

upd
Еще ProgID показывает OleView от MS, но не в Type Libraries и глужбе, как можно подумать, а в длиннющем списке All Objects, который составляется из всех-всех объектов, которые вообще нашлись. Для упомянутого примера ищем Util class и справа во вкладке по ум. видим ProgID. Т.е. по логике надо сначала найти какой-то (вероятно) полезный метод/свойство в одном из coclasses одной из Type Libraries, а уже затем идти в All Objects откапывать тот же самый coclass, чтобы узнать ProgID. Не так уж и просто.
Впрочем, из All Objects через интерфейсы можно добраться до методов, через них реализуемых.

4

Re: WSH: CreateObject("...") «Огласите весь список пжалуста!»

Возможно, сие для PowerBASIC. В WSH CLSID возможно использовать в формате *.wsf: WSH: пишем сценарии в формате WSF/*.wsc: WSH: пишем COM-серверы в формате Windows Script Component (WSC) в тэге <object>.

5

Re: WSH: CreateObject("...") «Огласите весь список пжалуста!»

Но откуда же брать имя собственно для CreateObject()?

С помощью вышеперечисленных браузеров объектов Вы можете просмотреть все доступные объекты, зарегистрированные на Вашей машине. ProgID — это именно то имя, которое можно использовать в «CreateObject()». Однако далеко не все объекты позволяют использовать себя в WSH, в первую очередь — потому, что не предназначены для позднего связывания.

6

Re: WSH: CreateObject("...") «Огласите весь список пжалуста!»

Спасибо, исправлено.

Пишу здесь т.к. в той теме комментировать нет возможности.

Там нельзя комментировать (даже когда сие доступно по статусу Разработчика), так что Вы сделали всё правильно.

Через "Сообщить модератору" еще неизвестно кому уйдет...

На форум. А там, кто первый исправит.

7

Re: WSH: CreateObject("...") «Огласите весь список пжалуста!»

jite пишет:

Есть ли где-нибудь список таких объектов? Откуда можно узнать о свойствах и методах?

Чаще всего открываю regedit.exe, раскрываю ветку HKEY_CLASSES_ROOT, проматываю до места где заканчиваются описатели типов файлов и там уже смотрю имена и классиды доступных объектов.

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

8

Re: WSH: CreateObject("...") «Огласите весь список пжалуста!»

msgbox GetObject("new:{000209FF-0000-0000-C000-000000000046}").Application
Я конечно далек от мысли... (с)

9

Re: WSH: CreateObject("...") «Огласите весь список пжалуста!»

smaharbA пишет:
msgbox GetObject("new:{000209FF-0000-0000-C000-000000000046}").Application

WOW ! Для меня это революция. ) Спасибо за инфу !

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

10

Re: WSH: CreateObject("...") «Огласите весь список пжалуста!»

Трошки было. Можно добавить как пример в Коллекцию.

11

Re: WSH: CreateObject("...") «Огласите весь список пжалуста!»

Xameleon, для меня это тоже большая неожиданность))