Hi there,

if working with the Windows version of Object Rexx it is very worthwhile to use
Object Rexx for remote controlling Windows applications via ActiveX/OLE-automation.

However, many times it is very hard to find the documentation about the interfaces
to such Windows programs. This is where the utility "rgf_oleinfo.hta" comes into
play: this is a set of Object Rexx programs (one embedded in HTML) which allows
interrogating such ActiveX/OLE-programs and renders the results as HTML files. This
has the benefit, that one is able to print the results with the help of the browser,
thereby gaining a printed documentation of those interfaces. Something, at least I
like to have myself.

If you want to see how such a rendering may look like, here is a rendering about
the interfaces the Microsoft Internet Explorere (MSIE) publishes:


http://wi.wu-wien.ac.at/rgf/rexx/orx13/tmp/InternetExplorer.Application_0.html
     ... full rendering

http://wi.wu-wien.ac.at/rgf/rexx/orx13/tmp/InternetExplorer.Application_1.html
     ... compact rendering

Should the layout be improvable from your point of view, then mostlikely it is
sufficient for you to merely change/adapt the supplied cascading style sheet (CSS),
a text file named "rgf_oleinfo.css". CSS even allow for defining formatting rules
depending on the media, e.g. screen and printer. So, it may be worthwhile to look
into this technology (cf. http://www.w3c.org).

---

You need Object Rexx at level 2.1.2, the update (available since 2002-12)can be
downloaded via the "Support download" section at:

     http://www-3.ibm.com/software/ad/obj-rexx/support.html

The Object Rexx programs for querying the ActiveX/OLE-interfaces with Object Rexx
are located in the archive:

     http://wi.wu-wien.ac.at/rgf/rexx/orx13/tmp/rgf_oleinfo20030103.zip

The Object Rexx utilities (all source code given) needed are stored in the following archive:

     http://wi.wu-wien.ac.at/rgf/rexx/orx08/orx8_99.zip

  their documentation can be found in:

     http://wi.wu-wien.ac.at/rgf/rexx/orx08/Part1.pdf
     http://wi.wu-wien.ac.at/rgf/rexx/orx08/Part2.pdf


Installation

- unzip the archives (make sure PATH points to the utility programs of orx8_99)

===> "rgf_oleinfo.hta" - HTML-Browser-Interface

- use the Microsoft Internet Explorer 6.0 or higher - MSIE - (it is a Windows Scripting Host - WSH-application) to load the file "rgf_oleinfo.hta" (the extension ".hta" denotes "HTML-applications") - should there be problems at runtime to find Object Rexx programs or classes, make sure the environment variable "PATH" points to the utility programs of orx8_99; if the problems persist, change the security settings of MSIE such, that your locally stored files/programs can execute without restrictions

===> "rgf_oleconstants.rex" - utility to create a ::requires-file for OLE constants

- usage: rgf_oleconstants appid/clsid [outfile] appid/clsid ... OLE/ActiveX application ID or CLSID outfile ....... optional name of the outputfile, otherwise STDOUT is used use the above outfile in a "::requires" directive which then allows you to use the defined constants, e.g. .ole.const~SWC_3RDPARTY example: rexx rgf_oleconstants InternetExplorer.Application msie_const.rex ... then, whenever you need to access MSIE-constants, then merely use ::requires msie_const.rex and refer to them e.g. like .ole.const~csc_navigateBack hint: one may use any combinations of such created files, as they all use the same directory object to map the constant names to their values (ie. you may ::require as many OLE-constant Rexx-files as you need

===> "rgf_olefinfo.rex" - utility (command line & function) to create

HTML-files about OLEObjects on the fly Additional infos to the supplied utility "rgf_oleinfo.rex" - creates a HTML-file containing the published interfaces of ActiveX/OLE objects - optionally starts and runs MSIE showing the results of the analysis - can be called from Object Rexx programs, e.g. to get infos at runtime about ActiveX/OLE objects (type "VT_DISPATCH"), here's the syntax: res=rgf_oleinfo(app_name | ole_object [, [header] [, [mode] [, [display]]]] ) ... invocation as a function, e.g. from *any* running Object Rexx program, returns .true, if OLEObject could get created|interrogated, .false else where: app_name ... OLE/ActiveX: a string denominating either PROGID or CLSID or ole_object ... OLE/ActiveX-object to interrogate header ... HTML-heading, if 1st argument is an OLE-object mode ... 0|1 full (0) or compact=default (1) listing display ... 0|1 no display (0) or display=default (1) with Internet Explorer example (called from a running Rexx program): ole=.OleObject~new("InternetExplorer.Application") success=rgf_oleinfo(ole, "Interfaces for the Internet Explorer") - can be called from the command line as well rexx rgf_oleinfo.rex app_name [mode [display]] where: app_name ... OLE/ActiveX: a string denominating either PROGID or CLSID mode ... 0|1 full=default (0) or compact (1) listing display ... 0|1 no display (0) or display=default (1) with Internet Explorer example (command-line): rexx rgf_oleinfo InternetExplorer.Application 1 1

---

Please post any comments, problems, qeustions, etc. here in news:comp.lang.rexx ---rony 2003-01-03 (Show contents of this directory.)