Microsoft KB Archive/172988

= SAMPLE: CLSNMMBR.EXE Programmatically Retrieves the Members of a DLL Class =

Article ID: 172988

Article Last Modified on 2/24/2005

-

APPLIES TO


 * Microsoft Visual Basic 5.0 Professional Edition
 * Microsoft Visual Basic 6.0 Professional Edition
 * Microsoft Visual Basic 5.0 Enterprise Edition
 * Microsoft Visual Basic 6.0 Enterprise Edition

-



This article was previously published under Q172988



SUMMARY
This article shows you how to programmatically retrieve the class names and members of a dll or ActiveX file that contains a type library. You can get this information by using the Object Browser in Visual Basic or you can programmatically retrieve this information. The sample program uses an unsupported file Tlbinf32.dll to retrieve some of the type library information, but is not a complete substitute for the Object Browser.

NOTE: The file Tlbinf32.dll is not supported by Microsoft Technical Support either electronically or via telephone. This file is subject to change without notice.

A Visual Basic project that demonstrates how to use this file to get the class names and members from a dll or ActiveX controls is available for download from the Microsoft Download Center: The following file is available for download from the Microsoft Download Center:

Clsnmmbr.exe

For additional information about how to download Microsoft Support files, click the following article number to view the article in the Microsoft Knowledge Base:

119591 How to Obtain Microsoft Support Files from Online Services

Microsoft scanned this file for viruses. Microsoft used the most current virus-detection software that was available on the date that the file was posted. The file is stored on security-enhanced servers that help to prevent any unauthorized changes to the file.



MORE INFORMATION
The Object Browser in Visual Basic shows you the collections and member names of a dll class. You may want to develop an add-in for use in other development environments that has the same functionality as the object browser and to add some automation capabilities. This sample shows you how to retrieve this information programmatically by using the file tlbinf32.dll. This file is stored in the OS\System directory of your installation disk and is copied to your computer's system folder during the Visual Basic installation.

After downloading and running the self-extracting file, the following files are extracted to your hard drive:


 * From1.frm (4K)
 * Form1.frx (1K)
 * Project1.vbp (1K)
 * Project1.vbw (1K)
 * Readme.txt

When you run the project in Visual Basic by pressing the F5 key, click the Choose file button to select a dll or ActiveX file. If the file contains a type library, the class names and members are displayed in the list box.

You can duplicate this project by completing the steps shown in the following section.

Step-by-Step Example
 Start Visual Basic and chose Standard Exe or, if Visual Basic is already running, choose New Project from the File menu. Set a reference to the file Tlbinf32.dll by completing the following steps:

 From the Project menu, click References. The References dialog box is displayed. From the References dialog box, click Browse. From your Windows system directory, select the file Tlbinf32.dll.   Add the following controls to the Form1 form and set the indicated properties: <pre class="fixed_text">  Control               Property Name             Property Setting Command Button       Name                      Command1 Caption                  Choose File Height                   495 Left                     4800 TabIndex                 3 Top                      720 Width                    1815

Command Button       Name                      Command2 Caption                  End Height                   495 Left                     4800 TabIndex                 4 Top                      1320 Width                    1815

Text Box             Name                      Text1 Height                   375 Left                     1080 TabIndex                 1 Top                      120 Width                    5535

List Box             Name                      List1 Height                   2205 Left                     120 Top                      720 Width                    4455

Common Dialog        Name                      CommonDialog1

Label                Name                      Label1 Caption                  Selected DLL Height                   375 Left                     0 TabIndex                 2 Top                      120 Width                    1095

</li>  Copy and paste the following code to the Code window of the Form1 form. Private Sub Form_Load strFilter = "DLL Files (*.dll)|*.dll|" strFilter = strFilter & "OCX Files (*.ocx)|*.ocx|" strFilter = strFilter & "All Files (*.*)|*.*" CommonDialog1.Filter = strFilter End Sub

Private Sub Command1_Click Dim x As TypeLibInfo Dim y As CoClasses Dim z As Interfaces Dim w As Members Dim u As MemberInfo Dim i As Integer, j As Integer, n As Integer, k As Integer Dim strFilter As String Dim strName As String, strMembers As String

On Error Resume Next CommonDialog1.ShowOpen List1.Clear Text1.Text = ""

'Program ends if you click the Cancel button in the 'file open dialog box If CommonDialog1.Flags = 0 Then End End If

'Get information from type library Set x = TypeLibInfoFromFile(CommonDialog1.filename) Set y = x.CoClasses

'Show Type Library information in the List box For i = 1 To y.Count If i <> 1 Then strName = "" List1.AddItem strName End If             strName = "Class Name: " & y.Item(i).Name List1.AddItem strName Set z = y.Item(i).Interfaces For n = 1 To z.Count Set w = z.Item(n).Members For k = 1 To w.Count Set u = w.Item(k) strMembers = "     Member: " & u.Name List1.AddItem strMembers Next Next Next Set z = Nothing Set y = Nothing Set x = Nothing Set w = Nothing

'Display filename in the text box Text1.Text = CommonDialog1.filename

'If the file does not contain type library information 'then display this error message. If Err.Number = 91 Then Dim strMsgTitle As String, strMsgError As String Dim intResponse strMsgTitle = "No Type Library" strMsgError = "You chose a file without a type library. " strMsgError = strMsgError & "Choose another file." Err.Clear intResponse = MsgBox(strMsgError, vbOKCancel, strMsgTitle)

If intResponse = vbOK Then Command1_Click End If

End If

End Sub

Private Sub Command2_Click End End Sub

</li> Press the F5 key to run the program. Select a .dll or an ActiveX control file. If the file contains a type library, the class names and members are displayed in the list box.</li></ol>

(c) Microsoft Corporation 1997, All Rights Reserved.

Contributions by Arsenio Locsin, Microsoft Corporation

Additional query words: Clsnmmbr

Keywords: kbhowto kbdownload kbprogramming kbfile kbsample KB172988

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.