Einstellungen für ActiveX RDP Client Control 2 vornehmen, (IDispatcher) ?
-
Ich habe da ein großes Problem:
Habe in einem MFC Dialog Fenster das ActiveX Steuerelement "RDP Client Control 2" von Microsoft eingefügt. Nun möchte ich die Einstellungen vornehmen wie Benutzername, Server und Passwort. In VB.NET gehts ganz einfach, doch wie komme ich an die einstellung des Passworts ? Irgendwie kommt man an die Einstellungen hinter "AdvancedSettings2" nicht so einfach dran

Irgendwie kommt nach dem "get"-Befehl ein LPDISPATCH zurück, doch was mach ich damit um das Passwort einzustellen ?.NET:
Form_RDP.RDP_Client.Server = "demo.demo.de" Dim username, passwort As String username = "demo" passwort = "demo" ' Herstellen der Remotedsktopverbindung Form_RDP.RDP_Client.UserName = username Form_RDP.RDP_Client.DesktopWidth = 1024 Form_RDP.RDP_Client.DesktopHeight = 786 Form_RDP.RDP_Client.AdvancedSettings2.ClearTextPassword = passwort ' !!!!!!C++:
m_mstscax1.put_Server("demo.demo.de"); m_mstscax1.put_UserName("demo"); m_mstscax1.put_DesktopWidth(1024); m_mstscax1.put_DesktopHeight(786); LPDISPATCH result; // ?????????????????? result = m_mstscax1.get_AdvancedSettings2(); // ?????????????????Helft mir bitte

-
IMsRdpClientAdvancedSettings2 *sett = (IMsRdpClientAdvancedSettings2 *)mstscax1->get_AdvancedSettings3();
nun
sett->... was auch immer das Interface hergibt
-
Hallo, wie hast du eigentlich das IMsRdpClientAdvancedSettings2
bekannt gemacht? Bei mir wird es nicht erkannt.#include "Mstscax2.h" using namespace MSTSCLib; //... IMsRdpClientAdvancedSettings2 *sett = (IMsRdpClientAdvancedSettings2 *)rdptest->get_AdvancedSettings3();Bei mir steht allerdings auch nicht "RDP Client Control 2" in den ActiveX-Elementen,
sondern 6x Microsoft RDP Client und 5 x Microsoft RDP Client (redist)Was mache ich da falsch?

-
Hallo, vielleicht mag ja doch noch jemand antworten, der helfen kann mir
das zu erklären.Man muss doch auch mit diesem QueryInterface() etwas anstellen können,
um an z.B. ClearTextPassword etwas übergeben zu können.IsleOfTechno hat ja wirklich in ettlichen Foren diesen Fall geschildert und
gefragt wer helfen kann, außer bis auf hier bei uns, gab es aber kaum etwas
brauchbares, außer:The method "get_AdvancedSettings2" implies you get back a IMsRdpClientAdvancedSettings2 interface. Actually you get a pointer to an IDispatch interface (LPDISPATCH) result. In the C++ you can, I think then call QueryInterface on the IDispatch within 'result' to get a IMsRdpClientAdvancedSettings2 interface which presumably will provide the methods you need to call.
Nur kenne ich mich mit COM und diesem QueryInterface noch nicht aus.
Macht man da in der Art etwas und verwendet dann diese IID aus der MSDN
IID_IMsRdpClientAdvancedSettings2?result->QueryInterface(IID_IDispatch,"??");
-
Die Anzahl der Aufrufe zeigt ja doch, dass mehrere Leute an dieser
Lösung interessiert sind. Vielleicht findet sich ja doch noch jemand,
der es uns Laien erklärt, wie man IMsRdpClientAdvancedSettings2 bekannt macht.
-
Kann es sein, dass man da mit CreateInstance was werden kann?
HRESULT hr = pntr.CreateInstance("{095E0738-D97D-488b-B9F6-DD0E8D66C0DE}"); pntr->Irgendwas();Aber wie wird der Pointer (pntr) dann definiert. Fragen über Fragen

-
Ich bin es jetzt mal so angegangen, dass ich
#import "C:\\WINDOWS\\system32\\Mstscax.dll" no_namespaceverwendet habe, um die nötigen Header-Dateien ins Projekt zu bekommen.
Aber dann knallt es in der mstscax.tlh:#if !defined(_WIN64) typedef __w64 unsigned long UINT_PTR; //<<--HIER #else typedef unsigned __int64 UINT_PTR; #endif #if !defined(_WIN64) typedef __w64 long LONG_PTR; #else typedef __int64 LONG_PTR; #endif typedef enum __MIDL_IMsRdpClientNonScriptable4_0001 RedirectionWarningType;Mit der Meldung (und das für diese Position sogar 3x
)'UINT_PTR': Neudefinition; unterschiedliche Basistypen
Sollte doch aber der richtige Ansatz sein, da ja in der Datei die ganzen
Definitionen drin stecken:__declspec(property(put=PutClearTextPassword)) _bstr_t ClearTextPassword;usw.