Einzelnen Beitrag anzeigen

Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Problem mit SHGetFileInfo und SHGFI_ICONLOCATION

  Alt 15. Sep 2005, 18:02
Zitat von Thebe:
Moin

Ich hab folgenden Code

Delphi-Quellcode:
var
  fi: SHFileInfo;
begin
  AFile := 'C:\irgendeine.bmp';

  SHGetFileInfo(pChar(AFile), 0, fi, SizeOf(fi), SHGFI_ICONLOCATION)

  // SHGFI_ICONLOCATION = Retrieve the name of the file that contains the icon representing the file specified by pszPath, as returned by the IExtractIcon::GetIconLocation method of the file's icon handler. Also retrieve the icon index within that file. The name of the file containing the icon is copied to the szDisplayName member of the structure specified by psfi. The icon's index is copied to that structure's iIcon member.
end;
Problem ist nur: szDisplayName beinhaltet nicht wider Erwarten nach der MSDN den Namen der Datei, wo das Icon abgespeichert is, sondern ist einfach nur leer. Ich habe erst gedacht ich hätte bei der weiteren Weiterverarbeitung nen Fehler beim Typecast gemacht, doch nachhem gesetzten Haltepunkt zeigt Delphi mir auch an das fi.szDisplayName komplett leer ist.

Woran kann sowas liegen ? Bin ich zu blöd nu drei bzw. vier Parameter zu übergeben oder liegt das anner WinAPI ?

MfG
- Thebe
Naja, ein bischen logisch denken wäre nicht soo schlecht
Delphi-Quellcode:
  SHGetFileInfo(pChar(AFile), 0, fi, SizeOf(fi), SHGFI_ICONLOCATION or SHGFI_TYPENAME or SHGFI_DISPLAYNAME);
  ShowMessage('Displayname: '+strpas(fi.szDisplayName)+#13+
              'Typename: '+strpas(fi.szTypeName)+#13+
              'IIcon: '+IntToStr(fi.IIcon));
  if fi.hIcon > 0 then
     DestroyIcon(fi.hIcon);
Wenn Du im Member DisplayName was drinstehen haben möchtest, dann musst Du das der Funktion auch in den Flags (SHGFI_DISPLAYNAME) mitteilen. Das DestroyIcon sollte man auch nicht vergessen, wenn man im Rahmen von Spielereien mal SHGFI_ICON verwendet...
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat