Getting Program Manager Group Names into Combo Box in VB

ID Number: Q80410

1.00

WINDOWS

Summary:

To get a list of group names under Windows 3.0 Program Manager, you

can call the Windows API GetPrivateProfileString function from a

Visual Basic program. This article describes a method of using the

Windows API GetPrivateProfileString function to get all the group

names under Program Manager and place them into a Visual Basic combo

box.

This information applies to Microsoft Visual Basic programming system

version 1.0 for Windows.

More Information:

Windows initialization (.INI) files contain information that defines

your Windows environment. Examples of Windows initialization files are

WIN.INI and SYSTEM.INI, which are commonly found in the C:\WINDOWS

subdirectory. Windows and Windows applications can use the information

stored in these files to configure themselves to meet your needs and

preferences. For a description of initialization files, read the

WININI.TXT file that comes with Microsoft Windows 3.0.

An initialization file is composed of at least an application name and

a key name. The contents of Windows initialization files have the

following format:

[Application name]

keyname=value

The GetPrivateProfile family of API functions are used to retrieve

information from any initialization file that you specify.

To declare this API function within your program, include the

following Declare statements in the global module or the general

Declarations section of a Visual Basic form:

Declare Function GetPrivateProfileString% Lib "Kernel"

(ByVal lpAppName$, ByVal lpKeyName$, ByVal lpDefault$,

ByVal lpReturnedString$, ByVal nSize%, ByVal lpFileName$)

Note: Each Declare statement must be on a single line.

The formal arguments to these functions are described as follows:

Argument Description

-------- -----------

lpAppName$ Name of a Windows application that appears in the

.INI file.

lpKeyName$ Key name that appears in the .INI file.

lpFileName$ Points to a string that names the .INI file. If

lpFileName does not contain a path to the file,

Windows searches for the file in the Windows

directory.

lpDefault$ Specifies the default value for the given

key if the key cannot be found in the

.INI file.

lpReturnedString$ Specifies the buffer that receives the character

string.

nSize% Specifies the maximum number of characters

(including the last null character) to be copied to

the buffer.

Code Example

------------

To get the group names from Program Manager into a combo box, do the

following:

1. Start Visual Basic or from the File menu, select New Project (ALT,

F, N) if Visual Basic is already running. Form1 will be created by

default.

2. Add a combo box (Combo1) to Form1.

3. Within the global Declarations section of Form1, add the following

Windows API function declaration. Note that the Declare statement

below must appear on a single line.

Declare Function GetPrivateProfileString% Lib "kernel"

(ByVal lpAppName$, ByVal lpKeyName$,ByVal

lpDefault$,ByVal lpReturnString$,ByVal nSize%,

ByVal lpFileName$)

4. Within the Form_Load event procedure for Form1, add the following

code:

Sub Form_Load()

' This is the name of the group in the PROGMAN.INI file

lpAppName$ = "Groups"

' All group names start with Group: Group1, Group2, etc.

lpKeyName$ = "Group"

' If no group found return value in lpDefault$

lpDefault$ = ""

' Initialize string

lpReturnString$ = Space$(128)

Size% = Len(lpReturnString$)

' This is the path and name the PROGMAN.INI file.

lpFileName$ = "c:\windows\progman.ini"

Valid% = 1

i% = 0

While (Valid%)

i% = i% + 1

' The following three lines must be typed on a single line

Valid% = GetPrivateProfileString(lpAppName$, lpKeyName$

+ LTrim$(Str$(i%)), lpDefault$, lpReturnString$,

Size%, lpFileName$)

' Discard the trailing spaces and null character.

group$ = Left$(lpReturnString$, Valid%)

' check to see if string was returned. Change arguments

' passed to the Mid$ statement to change what is displayed in combo

' box. By setting number to 15 this strips c:\windows\

' and .GRP

' The following 2 lines must be on one line

If Valid% > 0 Then combo1.AddItem Mid(group$, 12,

Len(group$) - 15)

Wend

' Set text of combo box to first item in list

combo1.listindex = 0

End Sub

5. From the Run menu, choose Start (ALT, R, S). The combo box will

contain the filenames (without the extension) of the group (.GRP

extension) files in the Windows directory. The group name conforms

to the MS-DOS filename convention; it is limited to eight

characters.

Additional reference words: 1.00