Announcement

Collapse
No announcement yet.

String --> PITEMIDLIST [Aber wie?]

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • String --> PITEMIDLIST [Aber wie?]

    Hallo an alle,

    ich würde gerne einen String ('C:\MEINPfad\Test') umwandeln
    in PITEMIDLIST.

    Ich habe leider keine Ahnung wie das funktionieren soll.
    Kann mir jemand Hilfestellung geben ?

    Gruß
    M. Buch

  • #2
    Hi Mike

    Tja, da must du mit ein bißchen OLE kämpfen. Anbei ein Beispiel, um aus dem String den PIDL zu erhalten. Aber aufgepaßt: Mit diesem Beispiel erhälst du einen voll qualifizierten PIDL (d.h. nicht einen relativen für den Pfad, sondern einen Root-ShellFolder). Um einen relativen zu erhalten, mußt du den letzten Teil des PIDL aus dem NewPIDL ermitteln.

    Anbei ein kleines Codebeispielchen:

    function GetPidl(const aPath: string): PItemIdList
    var
    P: PWideChar;
    Flags,
    NumChars: LongWord;
    sPath: string;
    NewPidl: PItemIDList;
    IDesktopFolder: IShellFolder;
    begin
    if Trim(aPath) = '' then
    Exit;

    sPath := aPath;
    if (sPath[(Length(sPath))] <> '\') then
    sPath := sPath + '\';

    NumChars := Length(sPath);
    Flags := 0;
    P := StringToOleStr(sPath);

    // Verbindung zur Shell aufbauen
    OLECheck(SHGetDesktopFolder(IDesktopFolder));

    OLECheck(
    IDesktopFolder.ParseDisplayName(
    Application.Handle,
    nil,
    P,
    NumChars,
    NewPIDL,
    Flags)
    );

    result := NewPIDL;
    end

    Comment


    • #3
      Danke für die Hilfe,

      ich konnte mir aber slebst helfen und habe es geschafft
      das Beispiel C++ aus der MSDN in Delphi umzusetzen.

      Mik

      Comment

      Working...
      X