Eigenes Com Objekt erstellen

  • Abend zusammen,

    hat jemand erfahrung damit com objecte zu erstellen? also sie zu programmieren? ich arbeite gerade an quickdraw 2, bisher nutzt es autoit object. Aber ich denke es ist schneller, wenn quickdraw selber ein com object ist. Mein problem dabei ist zur zeit, ich habe ein atl projekt in visual studio 2010 erstellt, sowie ein atl com object, das "CQuickdraw" heißt. Die Dll wir zur datei "Quickdraw 3.0.dll" erstellt, jdeoch bekomme ich es nicht hin dieses object in autoit zu erstellen. Die Dll selber kann ich mit "dllcreate("quickdraw 3.0.dll") ohne probleme öffnen, will ich aber ein com object erstellen weiß ich nicht genau wie objcreate (so gehts nicht objcreate("Quickdraw.Class")) aufrufen muss. Brauche ich dafür CLSID?

    grüße Moritz

  • ja, aber daraus geht nicht hervor, wie ich das ganze in autoit erstellen kann, in dem tutorial wird das ganz "direkt" implementiert. Aber ich schaue nochmal drüber und danke für die schnelle antwort

  • AutoIt benötigt immer IDispatch-Interfaces. Wenn du es über ObjCreate erstellen willst, musst du das Objekt in der Registry registrieren. Du kannst es aber auch von einem DLLCall zurückgeben, die DLL muss dann bis zum Skriptende geöffnet sein (DLLOpen). DLLCall($dll, "idispatch", "CreateMyObject")

  • So ich habe es jetzt hinbekommen ein objekt zu erstellen und zwar per dllcall :D . Eine Frage habe ich aber noch, wie es möglich das man in Autoit object auf variablen eines objectes zugreifen und diese verändern kann? Also wie realisiert man das in c++, weil visual studio bietet keine möglichkeit bei einem com objekt variablen hinzuzufügen.(achja sry für den doppelpost, aber mein firefox zeigt immer nur die ersten 2 post an und ich kann meinen post deswegen nicht bearbeiten. :( )

  • Guten Morgen,

    Natürlich kann man dem Objekt öffentliche Eigenschaften geben, einfach die Variablen in der Definition auflisten.
    Wie hast du das Interface eigentlich erstellt?

  • ich habe bei visual studio ein atl dll projekt erstellt. Dann habe ich eine atl com objekt klasse hinzugefügt und eine test funktion für den vollbildmodus von quickdraw. das problem ist wenn ich der klasse eine varibale "normal" declariere, dann kann ich sie nicht in autoit nutzen

  • Schön, ich hab die ATL noch nie verwendet ;)
    Übrigens sollte die ATL auch das verwenden über regsvr32 und ObjCreate erlauben. Ich weiß nur nicht, unter welchem Namen das COM-Interface registriert wird.

  • Hi,

    visual studio erstellt bei dem atl object automatisch funktionen zum registieren des jeweiligen objektes, ich habe aber noch nicht ganz herrausgefunden wie das geht. Weiterhin brauche ich diese funktion nicht, da ich den objecten teilweile variablen von anderen objecten übegeben muss.

    grüße moritz