Thema: IExtractImage

Einzelnen Beitrag anzeigen

tomkupitz

Registriert seit: 26. Jan 2011
320 Beiträge
 
Delphi 11 Alexandria
 
#1

IExtractImage

  Alt 24. Mär 2021, 15:54
Hallo,

ich habe einen gültigen ShellFolder und einen gültigen RelativePIDL. Das ExtractImage ist gültig. Wenn ich die Proc unten einmal aufrufe erhalte ich die HBITMAP. In einer Schleife wird die Proc immer wieder aufgerufen. Dann bleibt sie bei res:=ExtractImage.Extract(hbmp); hängen un kehrt nicht zurück. Warum?

Code:
  res:=CoInitializeEx(nil, COINIT_APARTMENTTHREADED or COINIT_DISABLE_OLE1DDE);

  if Succeeded(res) then
  begin
    res:=ShellFolder.GetUIObjectOf(0, 1, PDataInfo(ChildItem.Data).RelativeIDL, IExtractImage, nil, Pointer(ExtractImage));

    if Succeeded(res) then
    begin
      sz.cx:=Width;
      sz.cy:=Height;

      Priority:=IEIT_PRIORITY_NORMAL;
      ImgColorDepth:=32;
      Flags:=IEIFLAG_ASPECT or IEIFLAG_ASYNC;

      GetLocationRes:=ExtractImage.GetLocation(buf, sizeof(buf), Priority, sz, ImgColorDepth, Flags);

      if (GetLocationRes = NOERROR) or (GetLocationRes = E_PENDING) then
      begin
        res:=ExtractImage.Extract(hbmp);

        if Succeeded(res) then
        begin
          result:=TBitmap.Create;
          result.Handle:=hbmp;
          result.Dormant;
        end;
      end;
    end;

    CoUninitialize;
  end;
Danke und beste Grüße
  Mit Zitat antworten Zitat