Feedback
Did this article resolve your question/issue?

   

Article

How to confirm whether an ActiveX control is installed.

« Go Back

Information

 
TitleHow to confirm whether an ActiveX control is installed.
URL Name19859
Article Number000173315
EnvironmentProduct: OpenEdge
Version: All supported versions
OS: Windows
Other: ActiveX, OCX
Question/Problem Description
How to confirm ActiveX is installed correctly. 
How to find the file location of an ActiveX control.
What to check when error 6087 occurs when loading a .W that features an ActiveX control.
Steps to Reproduce
Clarifying Information
Error MessageSpecified ActiveX control is not registered or the .ocx file was moved from where it was registered.
Error occurred in procedure: <procedure name> (6087)

This error occurred while trying to load an ActiveX control. It is possible that the control was not properly installed or that the .ocx file was moved or deleted.
Defect Number
Enhancement Number
Cause
Resolution
When an ActiveX (OCX) object is used in a Progress program, the AppBuilder or User Interface Builder creates a binary file with extension .wrx that contains information about the OCX and the property values specified at design time. This file contains the names and class IDs of all ActiveX controls used in the code. The file is in Hex format but information can still be extracted.

However, an easier way to get this information is to view the AppBuilder source code, either via Code Preview or by viewing the code in an external editor (e.g. Procedure Editor or Notepad). In the "Create OCX Containers" section, a Windows registry entry for the specified OCX is included as a comment. For example,

/* CtrlFrame OCXINFO:CREATE-CONTROL from: {EAF26C8F-9586-101B-9306-0020AF234C9D} type: CSSpin */

This information can be used to find the reference to the specific OCX object. To break down the above example,
- CtrlFrame the (default) widget name of the OCX Control-Frame container;
- {EAF26C8F-9586-101B-9306-0020AF234C9D} is the unique identifer of the OCX control used in the Windows registry;
CSSPin is the actual name of the OCX.

To check whether the OCX is installed correctly or to simply find the file location, do the following:

- Copy the alpha-numeric value in curly braces.
- Go to Start > Run > Regedit.
- Go to Edit > Find... and paste in the value.
- Click Find Next to search the registry.

If the OCX is installed then it will be possible to locate a key with the same alpha-numeric value as its name. This may require searching again (hit F3) as the OCX can have more than 1 entry in the registry. For example, the search should end up on the following key with CSSpin:

32-bit Windows
HKEY_CLASSES_ROOT\CLSID\{EAF26C8F-9586-101B-9306-0020AF234C9D}

64-bit Windows
HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{EAF26C8F-9586-101B-9306-0020AF234C9D}

Expand the entry and select the InprocServer32 key to reveal the full path to the OCX file.


If the search does not locate a registry key then the ActiveX control is not installed on the system. Register the OCX manually using the regsvr32.exe command. For example,

regsvr32 csspin32.ocx

If the registry key is found then check the path listed in the InprocServer32 key and confirm that the ActiveX control actually exists in this location. If not, re-register the control as described above

On a 64-bit version of Windows operating system, there are two versions of the Regsv32.exe file:
  • The 64-bit version is %systemroot%\System32\regsvr32.exe.
  • The 32-bit version is %systemroot%\SysWoW64\regsvr32.exe.
Workaround
Notes
Do not change AppBuilder-generated code outside of AppBuilder as doing so could render the file unreadable to the AppBuilder utility.

References to Other Documentation:
Progress Article(s):
 How to Register an OCX or Automation Object (DLL)
Last Modified Date11/20/2020 7:30 AM
Attachment 
Files
Disclaimer The origins of the information on this site may be internal or external to Progress Software Corporation (“Progress”). Progress Software Corporation makes all reasonable efforts to verify this information. However, the information provided is for your information only. Progress Software Corporation makes no explicit or implied claims to the validity of this information.

Any sample code provided on this site is not supported under any Progress support program or service. The sample code is provided on an "AS IS" basis. Progress makes no warranties, express or implied, and disclaims all implied warranties including, without limitation, the implied warranties of merchantability or of fitness for a particular purpose. The entire risk arising out of the use or performance of the sample code is borne by the user. In no event shall Progress, its employees, or anyone else involved in the creation, production, or delivery of the code be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or other pecuniary loss) arising out of the use of or inability to use the sample code, even if Progress has been advised of the possibility of such damages.