Shell Interface: IShellFolder

  • hey Leute,
    ich folge gerade dieser Anleitung:
    msdn

    Es geht im Text darum wie ich Informationen über ein folder Objekt erhalte, indem ich das IShellFolder interface benutze.

    Zitat

    To retrieve a pointer to a namespace object's IShellFolder interface, you must first call SHGetDesktopFolder.


    Hab ich erledigt. Als Return habe ich nun einen pointer zum IShellFollder interface erhalten. Danach

    Zitat

    If you already have the PIDL of the folder you are interested in—for instance, by calling SHGetFolderLocation—you can retrieve its IShellFolder interface by calling the desktop's IShellFolder::BindToObject method. If you have the path of a file system object, you must first obtain its PIDL by calling the desktop's IShellFolder::ParseDisplayName method and then call IShellFolder::BindToObject. If neither of these approaches is applicable, you can use other IShellFolder methods to navigate the namespace. For more information, see Navigating the Namespace.

    Ich hab zwar auch eine PIDL (absolute), aber verstehe den Zweck des zuvorerhaltenen pointers nicht. Was kann ich mit pointer zu interfaces machen? Ich habe bisher keine Funktion gesehen, die z.B. aus einem pointer eines interfaces ein Objekt macht?!

    Wenn ich das ganze richtig verstanden habe, dann muss ich doch erstmal ein Objekt erstellen um auf die Methoden zugreifen zu können und das kann man mit

    Zitat

    ObjCreateInterface ( "CLSID" , "IID" [, "interface_description",[flag = True]] )

    Dort gebe ich irgendeine CLSID eines COM objektes rein, welches das Interface implementiert hat, auf dessen Methoden ich zugreifen möchte, also hier IShellFolder, die Interface ID und den Funktions-tag und erhalte ein objekt welches mir erlaubt die Methoden zu benutzen, hab ich doch richtig verstanden oder?

    Also wofür ist der pointer auf ein interface zu gebrauchen? Und was macht die BindToObject Methode, als ouput gibts wieder einen pointer auf das angefragte interface, man gibt ja wieder eine interface id rein^, wobei ich die anderen parameter auch nicht verstehe.

    Am Ende des Tages möchte ich nur die Methode 'GetDisplayNameOf' des IShellFolder interfaces anwenden. Allerdings versteh ich die auch nicht weil ich aktuell eine PIDLIST_ABSOLUTE (Returns a PIDL that specifies the location of the selected folder relative to the root of the namespace.) habe und als parfameter muss ich PCUITEMID_CHILD (PIDL that uniquely identifies the file object or subfolder relative to the parent folder.) übergebn, aber ich weiß nicht woher ich die bekomme

    Zitat

    HRESULT GetDisplayNameOf(
    [in] PCUITEMID_CHILD pidl,
    [in] SHGDNF uFlags,
    [out] STRRET *pName
    );

    Ich lese mich seit tagen ein, aber ich raff das vorne und hinten nicht, kann mir das mal bitte jemand erklären?
    Danke

    Einmal editiert, zuletzt von Trolleule1337 (1. März 2014 um 02:35)