23

VBS で作成されたオブジェクトの使用可能なメソッドを一覧表示する方法はありますか?

例えば:

Set IE = CreateObject("InternetExplorer.Application")

このオブジェクトの利用可能なプロパティを次のようにリストしたいと思います。

IE.AddressBar
IE.Application
IE.Busy
...

または方法:

IE.ClientToWindow
IE.ExecWB
IE.GetProperty
...

VBSで任意の有効なオブジェクトに利用可能なプロパティを見つけるにはどうすればよいですか?

4

6 に答える 6

11

VBScript 自体は、関数TypeNameVarType関数の外部での型のイントロスペクションをサポートしていません。これにより、オブジェクトの型が得られますが、内部構造へのアクセスは得られません。

他の回答で説明されているように、この機能を提供する DLL がありますが、Windows には同梱されていません。また、Visual Studio の古いバージョンの一部であったため、現在は合法的に取得する方法がない可能性があります。

于 2013-01-14T00:00:04.620 に答える
10

それは部分的には真実ですが、不完全です.... Google、GetObjectText_、Methods_、およびPropeties_

参照されるメソッドは、WbemScripting.SWbemLocatorオブジェクトを介してリモートホストのcimv2名前空間に接続されている間に収集されたオブジェクトでのみ機能します。このオブジェクトがローカルホストで動作する機能を持っている場合、それは私にはわかりません。

これを行うと、そこに保持されているクラス[Win32_Services、Win32_Drivesなど]のいずれかをクエリし、以下のようにオブジェクトのFor-Nextループを使用して結果セット内のオブジェクトに問い合わせることができます...

For Each oProp in oObject.Properties_
    'be careful here because some propeties may be an object or an array.
    'so test for that here using "typename" or "vartype"
    wScript.Echo oProp.Name & vbTab & oProp
Next

または...

For Each oMethod in oObject.Methods_
    wScript.Echo oProp.Name
Next

ついに、 ...

For Each oProp in oObject.Properties_
   'This will display all of an objects properties
   oProp.GetObjectText_
Next
于 2013-02-26T16:51:11.323 に答える
1

TLI を使用します。TLI.TLIApplicationクラス (から)はtlbinf32.dll、インスタンスからさまざまな COM オブジェクトを調べることができます。スクリプトをサポートし、参照を追加できるスクリプト エディターを備えた Excel またはその他の Microsoft 製品で TLI ライブラリを探索し、tlbinf32.dll. リファレンス内の名前は「Typelib 情報」です。

ただし、DLL は Windows に同梱されていないことに注意してください。

InterfaceInfoFromObject()VBScript クラスの メソッドを使用するか、代わりに を試してくださいClassInfoFromObject()

Option Explicit

Dim TLI
Dim MyObject
Dim TypeInfo
Dim MemberInfo

Set TLI = CreateObject("TLI.TLIApplication")
Set MyObject = New MyClass
Set TypeInfo = TLI.InterfaceInfoFromObject(MyObject)

For Each MemberInfo In TypeInfo.Members
    WScript.Echo MemberInfo.Name
Next

Class MyClass
    Dim Name_

    Public Property Get Name
        Name = Name_
    End Property

    Public Property Let Name(ByVal Value)
        Name_ = Value
    End Property
End Class
于 2016-07-05T16:16:48.617 に答える
-3

これを試して ...

For i = 0 To webElementCount-1 Step 1

  innertextProp = myValue2(i).GetROProperty("innertext")
  print i & innertextProp
  print innertextProp

Next
于 2015-11-18T14:52:49.070 に答える