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_namespace
    

    verwendet 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.


Anmelden zum Antworten