Home > Back-end >  A 64 - bit application can use 32-bit activex control?
A 64 - bit application can use 32-bit activex control?

Time:09-16

Under win64 a MXComponent software installation, but it only registered a 32-bit version, installed the software in the Delphi 32-bit activex controls, into a 32-bit programs use there is no problem, but the program into 64, compiled by, is the time to run the program, prompt class not registered, got it for a few days, did not figure out how to get?
Can 1 in 64 to re-register a 32-bit activex components?
2 can you make up a 32-bit DLL call the activex, then by 64 program calls the 32-bit DLL?
Please instruct expert, thank you

CodePudding user response:

It is too difficult, do not know how, please give advice or comments

CodePudding user response:

A 32-bit application can only be called 32-bit ActiveX
A 64 - bit application can only call 64 ActiveX

CodePudding user response:

ActiveX/OCX can be 32/64 bit interoperability, not ordinary DLLs,

CodePudding user response:

ActiveX and applications are in the same process, if one USES 32 bit address space, another can use 64 - bit address space?

CodePudding user response:

You can try:
https://www.codeproject.com/tips/267554/using-bit-com-object-from-bit-application
By modifying the Registry, you can allow a 64 - bit app to use a 32 - bit COM object.

Locate your COM object GUID under HKey_Classes_Root Wow6432Node/clsids.
Once located, add a new REG_SZ value (string). The name should be AppID and The data should be The same COM object GUID you have just searched for.
Add a new key under HKey_Classes_Root Wow6432Node/AppID. The new key should be called The same as The COM object GUID.
Under the new key you just added, add a new REG_SZ value (string), and call it DllSurrogate. Leave the value empty.
Create a new key under HKey_Local_Machine/Software/Classes/AppID, if it doesn 't already exist. Again, the new key should be called the same as the COM object' s GUID. No values are necessary to be added under this key.

CodePudding user response:

That was through a proxy to invoke, rather than a direct call.

CodePudding user response:

64 will have to use a 64 - bit activex controls, a 64 - bit backward compatibility, only 64 can perform a 32-bit program,
Pure 64 bit program, you must use 64 - bit controls,

CodePudding user response:

For application, the call is the same, ActiveX/OCX is original is not called directly, but through the COM interface call interface is just a pointer, the actual method invocation is done by the system level,

refer to 6th floor BlueStorm response:
that was through a proxy to invoke, rather than a direct call.


Has nothing to do with the agent, because COM server supports two kinds of operation mode: the process in and out of the process, the latter is 32/64 support interoperability, the need to set up the registry, because actually have two win64 registry, one for 64 - bit application, another for 32-bit applications, registered 64 only when ActiveX component part in the 64 - bit registry, 32, too, so by default 64 program can not find a 32-bit ActiveX, in theory, all binary interface implementation based on COM specification, such as OLE, OCX (OLE Control Extension), ActiveX (ActiveX actually is just a name, is technically OLE Automation server) can achieve 32/64 interoperability, such as the measured write a win64 program, OLE opened the word2003 normal,

CodePudding user response:

Ordinary DLLs are not 32/64 interoperability, because ordinary DLLs can only in the process, in the address space of the caller,

CodePudding user response:

ActiveX/OCX can be 32/64 bit interoperability, not ordinary DLLs,
  • Related