My old Delphi 7 program with built-in RDP client has been working for many years, but it gives access violations in Windows 8 and if you install RDP 8 in Windows 7, where the file mstscax.dll (with ActiveX component) is updated to version 6.2.
Until recently, my project imported a type library from mstscax.dll v6.0, and I used TMsRdpClient5 if the GUID was in the registry, otherwise TMsRdpClient2 for backward compatibility with XP. To investigate this new problem, I installed RDP 8 on my 32-bit Windows 7, where my Delphi 7 is located, imported a new library of MSTSCLib_TLB type libraries, and these are my conclusions:
In all components, I can set the properties directly on the component, such as Domain and ColorDepth, without errors. But if I want to set properties such as AdvancedSettings2.RDPPort, AdvancedSettings2.ClearTextPassword or SecuredSettings2.StartProgram, this will lead to "Access Violation in the mstscax.dll module. Reading the address ..."
All these properties are located in the "auxiliary interfaces", and the problem is that these functions in the imported library code (returning the "auxiliary interfaces") lead to access violations:
function Get_AdvancedSettings2: IMsRdpClientAdvancedSettings; function Get_SecuredSettings2: IMsRdpClientSecuredSettings;
What has Microsoft changed in mstscax.dll that the imported type library cannot interact with? Is it possible to import a type library into the latest Delphi XE3 and use it in Delphi 7 and hope that it will correctly introduce the new technology?
My Delphi 7 has all updates installed. Any help would be greatly appreciated.
source share