자신의 컴퓨터에 확장자에 맞는 아이콘을 가져 와서 ImageList에 넣어 줄때 사용하는 함수이다. Uses문에 ShellAPI, ShlObj를 추가한뒤에 사용한다. 전에 만들어 두었던것이 사라져서 다시 만들었다.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
procedure GetSysstemICon(sImageList, lImageList: TImageList); var sfi: TShFileInfo; begin // ImageList에 파일의 내용을 넣는다. // get access to the shell imagelist... sImageList.handle := shgetfileinfo('', 0, sfi, sizeof(TShFileInfo), SHGFI_SYSICONINDEX or SHGFI_SMALLICON); sImageList.shareimages := true; sImageList.BlendColor := clHighlight; lImageList.handle := shgetfileinfo('', 0, sfi, sizeof(TShFileInfo), SHGFI_SYSICONINDEX or SHGFI_LARGEICON); lImageList.shareimages := true; lImageList.BlendColor := clHighlight; end; |
아래 함수는 화일의 정보를 가져온다.
뭐, 대충 파라미터를 보면 알겠지만, Full Path + 화일명을 넣어주면 확장자 정보 및 사이즈,
날짜등을 얻어온다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
procedure FileInfo( sFileName : String; var iIconIndex : Integer; var lFileSize : LongInt; var sFileType : String; Var dCreateDate, dUpdateDate, dLastDate : TDateTime ); var ShFileInfo: TShFileInfo; SearchRec : TSearchRec; FindHandle :THandle; function GetFileDateTime(FileDateTime: TFileTime): TDateTime; var LTime : TFileTime; Systemtime : TSystemtime; begin FileTimeToLocalFileTime( FileDateTime, LTime); FileTimeToSystemTime( LTime, SystemTime ); Result := SystemTimeToDateTime( SystemTime ); end; function GetFileSize( FS : LongInt ) : LongInt; begin Result := FS Div 1024; if Result <> ( Fs / 1024 ) then Result := Result + 1; end; begin shgetfileinfo(pChar( sFileName ), 0,ShFileInfo,SizeOf( TShFileInfo ), SHGFI_USEFILEATTRIBUTES or SHGFI_ICON or SHGFI_SYSICONINDEX or SHGFI_SMALLICON or SHGFI_EXETYPE or SHGFI_TYPENAME ); // <-- 화일 정보를 얻어 온다. // SHGFI_PIDL or SHGFI_ICON or SHGFI_ATTRIBUTES); <-- ICon그림을 직접 가져올때.. iIconIndex := ShFileInfo.iIcon; sFileType := ShFileInfo.szTypeName; // 파일종류(Type) If FindFirst( sFileName, faAnyFile, SearchRec ) = 0 Then try lFileSize := GetFileSize( SearchRec.FindData.nFileSizeHigh * MAXDWORD + SearchRec.FindData.nFileSizeLow ); dCreateDate := GetFileDateTime( SearchRec.FindData.ftCreationTime ); dUpdateDate := GetFileDateTime( SearchRec.FindData.ftLastWriteTime ); dLastDate := GetFileDateTime( SearchRec.FindData.ftLastAccessTime ); finally FindClose( SearchRec ); end; end; |
최신 댓글