DLL-Return als Objekt - wie?

  • In VB(A) geht das so:

    Mit den AutoIt-DLL-Funktionen DLLCall, DLLOpen habe ich das nicht adaptiert bekommen.
    Wie im VBA-Code zu sehen ist, wird mit dem Aufruf der IMSIGX.dll ein Objekt zurückgegeben, was wohl mit den AutoIt-DLL-Funktionen nicht geht.

    Wie könnte man das realisieren?

    Mit der AutoIt-COM-Funktionalität (GetObject usw.) kann ich erfolgreich direkt auf das Programm (exe) zugreifen, aber es ist dann recht langsam. Der Zugriff über die COM-Schnittstellen-DLL wäre als "InProg-Server" viel schneller.

    Hier noch ein paar Screenshots von der VB-IDE, wenn man im Schrittbetrieb die komplizierte Struktur des referenzierten Objekts der COM-Schnittstellen-DLL "aufblättert":

    Grüsse aus Berlin

    PSblnkd

  • Hi

    Mit ObjCreateInterface kannst du aus einem DLL-Return Pointer ein COM Object machen.

    Ist schon ein Weilchen her, aber in Direct2D und DirectSound hab ich das so verwendet damals.

    In den Include files von VB, oder auch andernen Sprachen findest du vielleicht das passende.

    Du benötigst die IIDs, die etwa folgende Struktur haben: "{00000000-0000-0000-0000-000000000000}" und die Interface Description, die etwa so aufgebaut ist, wie DLL Structs.

  • @eukalyptus

    Danke für Deinen Hinweis.
    Diese Funktion von AutoIt kenne ich noch nicht - vielleicht, weil ich nicht die neueste Version benutze.
    Leider kann ich mir Deine UDFs nicht anschauen - die Links sind nicht mehr aktuell.
    In der AutoIt-OnlineHilfe -> https://autoit.de/onlinehilfe/on…teInterface.htm wird ObjCreateInterface als "experimentell" angegeben und ist nach kurzem Drüberschauen mindestens genauso kompliziert wie DllCall -> https://autoit.de/onlinehilfe/on…ons/DllCall.htm. Da muß man eine Menge Verständnis mitbringen, Geduld und eigene Erfahrungen ...

    Mit ObjCreateInterface werde ich mich aber noch eingehender beschäftigen. Momentan muß es eben mit ObjCreate und ObjGet gehen. Leider funktioniert eine Referenzierung der COM-Dll mit ObjGet nicht, sondern nur mit dem exe-Hauptprogramm ...

    Grüsse aus Berlin

    PSblnkd