Ik probeer met de API-call ShGetFileInfo informatie uit een bestand te halen vanuit Delphi. Ik heb uiteraard ShellApi in de uses-clausule bovenaan in m'n unit van waaruit ik deze call aanroep.
In de Win32 Developer's Reference staat deze call zo gedefinieerd:
In ShellApi.pas staat deze vervolgens zo uitgewerkt:
Het gaat mij om de member dwAttributes, want die informatie wil ik graag. Alleen het lukt me niet de inhoud daarvan te lezen. De Win32 helpfile zegt over deze dwAttributes:
hoe kan ik die dwAttributes nu uitlezen? Ik heb hem geprobeerd te vergelijken met SFGAO_CANCOPY zoals:
if dwAttributes = SF_CANCOPY then
maar ik heb geen flauw idee hoe het moet; die SFGAO_ waardes kent ie allemaal niet in Delphi, dus heeft iemand die redelijk bekend is met dit soort fratsen misschien een oplossing?
In de Win32 Developer's Reference staat deze call zo gedefinieerd:
code:
1
2
3
4
5
6
7
| typedef struct _SHFILEINFO { // shfi
HICON hIcon;
int iIcon;
DWORD dwAttributes;
char szDisplayName[MAX_PATH];
char szTypeName[80];
} SHFILEINFO; |
In ShellApi.pas staat deze vervolgens zo uitgewerkt:
code:
1
2
3
4
5
6
7
| _SHFILEINFOA = record
hIcon: HICON; { out: icon }
iIcon: Integer; { out: icon index }
dwAttributes: DWORD; { out: SFGAO_ flags }
szDisplayName: array [0..MAX_PATH-1] of AnsiChar; { out: display name (or path) }
szTypeName: array [0..79] of AnsiChar; { out: type name }
end; |
Het gaat mij om de member dwAttributes, want die informatie wil ik graag. Alleen het lukt me niet de inhoud daarvan te lezen. De Win32 helpfile zegt over deze dwAttributes:
Deze GetAttributesOf call geeft vervolgens als een HRESULT bijv de volgende waarden terug SFGAO_CANCOPY, SFGAO_CANDELETE, SFGAO_CANLINKetc. De vraag is:Array of flags that indicates the attributes of the file object. For information about the flags, see the description of the IShellFolder::GetAttributesOf method.
hoe kan ik die dwAttributes nu uitlezen? Ik heb hem geprobeerd te vergelijken met SFGAO_CANCOPY zoals:
if dwAttributes = SF_CANCOPY then
maar ik heb geen flauw idee hoe het moet; die SFGAO_ waardes kent ie allemaal niet in Delphi, dus heeft iemand die redelijk bekend is met dit soort fratsen misschien een oplossing?