| **Navigation:**  [[introduction.htm|Language Reference]] > App A - DDE, OLE, and OCX > Object Linking and Embedding >====== OLEDIRECTORY (get list of installed OLE/OCX) ====== | [[ole container properties.htm|{{btn_prev_n.gif|Previous page}}]][[introduction.htm|{{btn_home_n.gif|Return to chapter overview}}]][[ole ocx custom controls.htm|{{btn_next_n.gif|Next page}}]] | | || **OLEDIRECTORY(** //list// , //flag// [, //bits// ]** )** {{blk2blue.jpg|blk2blue.jpg}} | **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)**