ObjCreateInterface() => CLSID & IID

  • Schönen guten Morgen :)
    Seit geraumer Zeit steht uns ja die ObjCreateInterface() Funktion zur Verfügung. Damit ist es ja möglich solche Finge wie Direct2D oder auch DirectWrite und DirectShow in AutoIt zu verwenden. Das Potential dahinter und deren Verwendung habe ich bereits erkannt, jedoch ist mir noch eins unschlüssig.

    Bleiben wir mal bei dem Beispiel welches in der englischen Hilfe existiert. Dort wird via ObjCreateInterface() und dem ITaskBar Interface das Notepad Icon aus der Taskbar gelöscht. Jedoch hab ich absolut keine Ahnung wie man auf die CLSID und IID des Interfaces gekommen ist. Vielleicht kann mir einer vob euch erklären woher diese (ich nenne Sie mal so) "IDs" stammen und wie man diese für bestimmte Interfaces ermittelt!?

    Lg. Make :)

  • Im konkreten Fall kannst du die Strings folgendermaßen finden:

    1) googlen nach "ITaskbarList"
    2) Ergebnis "ITaskbarList3 interface (Windows) - MSDN - Microsoft" öffnen
    3) Unter "Requirements" - "Header" steht dann: "Shobjidl.h"
    4) googlen nach "Shobjidl.h"
    5) "Shobjidl.h" öffnen/downloaden; Ich hab den ersten Treffer von "github.com" verwendet
    6) In dieser Datei nach "IID_ITaskbarList" bzw. "CLSID_TaskbarList" suchen

    E

  • Im Falle von ITaskBarList geht's sogar einfacher:

    1) regedit öffnen
    2) Zu "Bearbeiten" (oder Edit) gehen und dann auf "Suchen" drücken.
    3) Einstellen, dass nur nach Daten (oder Eng. Data) gesucht werden soll und nach dem Interface suchen.
    5) Wenn du erfolgreich bist, wird dir ein Default (kA wie das auf Deutsch heißt; vlt Standard!?) Wert angezeit mit bspw. "ITaskBarList" als REG_SZ-Data.
    6) Übergeordnete Schlüssel des Defaults ist dann im Endeffekt die IID des gesuchten Interfaces.

  • Ach super, danke ihr zwei!
    Die meisten Header liefert "Microsoft SDK" (ich weiß gerade nicht ob das vorinstalliert ist) mit: C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include
    Da kann ich mir die Online Header Suche schonmal sparen ^^

    Habe das Gleiche mal für das ID2D1Factory Interface (Direct2D) versucht und muss sagen dass ich tatsächlich die IID gefunden habe. Da ich von eukalyptus ja die Direct2D UDF besitze konnte ich das leicht nachprüfen. Stimmt alles, dankeschön. Jetzt weiß ich endlich wie man an die IID's dran kommt. CLSID wird dann wohl auf gleichen Weg erfolgen, und je nach Bibliothek kann ja auch einfach der Pointer zu dem Objekt genutzt werden.

    Ich bedanke mich recht herzlich ^^