Registriert seit: 26. Jan 2011
341 Beiträge
Delphi 12 Athens
|
IExtractImage
24. Mär 2021, 16: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
|
|
Zitat
|