MSScriptControl.ScriptControlClass - helper???
От: AlexKB  
Дата: 05.08.04 16:24
Оценка:
Работаем с MS ScriptControl (VB скрипт). Добавляем к нему свои объекты и методы.

Есть ли способ узнать список доступных (добавленных) к данному моменту объектов и методов?

Если из контрола нельзя запросить такой список, то, видимо, придется дублировать добавляемую информацию в программе, что неприятно, как и любое другое дублирование кода.

Пока удалось узнать, что теоретически можно запросить у него некие
Procedures
Modules
но это, видимо, не совсем то что нужно, впрочем как практически вызывать их — пока не понятно.

Видели еще какой-то HELPER, может поискать больше информации о нем?

Свои объекты и их методы добавляем вызывая
AddObject('Object1', Object1, False)
и
AddObject('OurMethods', ObjWithMethods, True)

Помогите кто чем может, пожалуйста.
Alex
Re: MSScriptControl
От: Vi2 Удмуртия http://www.adem.ru
Дата: 06.08.04 10:03
Оценка: 3 (1)
Здравствуйте, AlexKB, Вы писали:

AKB>Работаем с MS ScriptControl (VB скрипт). Добавляем к нему свои объекты и методы.

AKB>Есть ли способ узнать список доступных (добавленных) к данному моменту объектов и методов?

AKB>Пока удалось узнать, что теоретически можно запросить у него некие

AKB>Procedures
AKB>Modules
AKB>но это, видимо, не совсем то что нужно, впрочем как практически вызывать их — пока не понятно.

Вот это именно то, что нужно.

Modules — это коллекция модулей, так что модули можно перебирать.

Procedures — это коллекция всех известных процедур. Можно перебирать или использовать по известному имени.

А вот с CodeObject будет посложней. Но можно воспользоваться TLBINF32.DLL (TypeLib Information), через которую можно определить все имена, известные в этом объекте. Например, так:

  Dim ta As TLI.TLIApplication, ti As TLI.InterfaceInfo, tm As TLI.MemberInfo
  Set ta = New TLI.TLIApplication

  Set ti = ta.InterfaceInfoFromObject(ScriptControl1.CodeObject)
  Debug.Print ti.Name, ti.Members.Count
  For Each tm In ti.Members
    ' Имеет похожие методы, что и Procedure - v.Name, v.HasReturnValue, v.NumArgs
    Debug.Print tm.Name, tm.Parameters.Count
  Next
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
Re[2]: MSScriptControl
От: AlexKB  
Дата: 06.08.04 14:47
Оценка:
Здравствуйте, Vi2, Вы писали:

AKB>>Работаем с MS ScriptControl (VB скрипт). Добавляем к нему свои объекты и методы.

AKB>>Есть ли способ узнать список доступных (добавленных) к данному моменту объектов и методов?

AKB>>Пока удалось узнать, что теоретически можно запросить у него некие

AKB>>Procedures
AKB>>Modules
AKB>>но это, видимо, не совсем то что нужно, впрочем как практически вызывать их — пока не понятно.

Vi2>Вот это именно то, что нужно.


Vi2>Modules — это коллекция модулей, так что модули можно перебирать.


Vi2>Procedures — это коллекция всех известных процедур. Можно перебирать или использовать по известному имени.


Вы правы... Пока удалось лишь найти документацию на... своем же компьютере: C:\WINDOWS\system32\MSSCRIPT.HLP.

Vi2>А вот с CodeObject будет посложней. Но можно воспользоваться TLBINF32.DLL (TypeLib Information), через которую можно определить все имена, известные в этом объекте. Например, так:


Vi2>
Vi2>  Dim ta As TLI.TLIApplication, ti As TLI.InterfaceInfo, tm As TLI.MemberInfo
Vi2>  Set ta = New TLI.TLIApplication

Vi2>  Set ti = ta.InterfaceInfoFromObject(ScriptControl1.CodeObject)
Vi2>  Debug.Print ti.Name, ti.Members.Count
Vi2>  For Each tm In ti.Members
Vi2>    ' Имеет похожие методы, что и Procedure - v.Name, v.HasReturnValue, v.NumArgs
Vi2>    Debug.Print tm.Name, tm.Parameters.Count
Vi2>  Next
Vi2>


Где про это поподробнее почитать можно, там же?
Alex
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.