Navigation: Language Reference > App A - DDE, OLE, and OCX > Object Linking and Embedding >====== OLEDIRECTORY (get list of installed OLE/OCX) ====== | |
OLEDIRECTORY( list , flag [, bits ] )
OLEDIRECTORY | Gets a list of all installed OLE servers or OCX controls. |
list | The label of the QUEUE structure to receive the list. |
flag | An integer constant or variable that determines whether to get a list of OLE servers (flag = 0) or OCX controls (flag = 1). |
bits | An integer constant or variable that determines whether to get a list of 16-bit or 32-bit OCX controls. If one (1), it returns 16-bit OCX controls. If two (2), it returns 32-bit OCX controls. If three (3), it returns both 16-bit and 32-bit OCX controls. If omitted or zero, 16-bit programs return 16-bit OCX controls and 32-bit programs return 32-bit OCX controls. |
Note: With 16-bit support deprecated in this release, the 32-bit mode should be used exclusively.
OLEDIRECTORY gets a list of all installed OLE servers or OCX controls and places it in the list QUEUE. The list QUEUE must be declared with the same structure as the OleQ QUEUE declaration in EQUATES.CLW:
OleQ QUEUE,TYPE
Name CSTRING(64) !Name of the OLE Server application
CLSID CSTRING(64) !Unique identifier for the operating system
ProgID CSTRING(64) !Registry name, such as: Excel.Sheet.5
END
Example:
ResultQ QUEUE(OleQ). !Declare ResultQ the same as OleQ QUEUE in EQUATES.CLW
CODE
OLEDIRECTORY(ResultQ,0) !Get list of installed OLE Servers & put it in ResultQ
!then let the user pick one:
?OleControl{PROP:Create} = SelectOleServer(ResultQ)
!User's OLE Server choice procedure:
SelectOleServer PROCEDURE(OleQ PickQ)
window WINDOW('Choose OLE Server'),AT(,,122,159),CENTER,SYSTEM,GRAY
LIST,AT(11,8,100,120),USE(?List),HVSCROLL, |
FORMAT('146L~Name~@s64@135L~CLSID~@s64@20L~ProgID~@s64@'),FROM(PickQ)
BUTTON('Select'),AT(42,134),USE(?Select)
END
CODE
OPEN(window)
SELECT(?List,1)
ACCEPT
CASE ACCEPTED()
OF ?Select
GET(PickQ,CHOICE(?List))
IF ERRORCODE() THEN STOP(ERROR()) END
POST(EVENT:CloseWindow)
END
END
RETURN(PickQ.ProgID)