以下のサンプルコードを参考にしてください。
このサンプルアプリケーションは、どのようにしてファイル、フォルダ、ドライブの情報を取得するかを提供しています。
サンプルプログラムのダウンロードは→[Delphi FAQ用サンプル] ファイル情報を取得する
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ShellApi, FileCtrl;
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit;
Label4: TLabel;
FileListBox1: TFileListBox;
DirectoryListBox1: TDirectoryListBox;
DriveComboBox1: TDriveComboBox;
Label5: TLabel;
Edit4: TEdit;
Edit5: TEdit;
Label6: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormPaint(Sender: TObject);
private
public
end;
var
Form1: TForm1;
FileInfo: SHFILEINFO;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
Filename: String;
attrs: string;
attributes: integer;
begin
Form1.Repaint;
if (filelistbox1.ItemIndex <> - 1) then
begin
Filename := FileListBox1.FileName;
end
else
begin
Filename := DirectoryListBox1.Directory;
end;
Edit1.Text := filename;
// 表示名の取得
SHGetFileInfo(PChar(FileName), 0, FileInfo, SizeOf(FileInfo), SHGFI_DISPLAYNAME);
Edit2.Text := FileInfo.szDisplayName;
// ファイル種別の取得
SHGetFileInfo(PChar(FileName), 0, FileInfo, SizeOf(FileInfo), SHGFI_TYPENAME);
Edit3.Text := FileInfo.szTypeName;
// ファイルに関連づいたアイコンの取得
SHGetFileInfo(PChar(FileName), 0, FileInfo, SizeOf(FileInfo), SHGFI_ICON);
Drawicon(canvas.handle,5,170,FileInfo.hIcon);
Form1.Repaint;
// ファイル属性の取得
attributes := GetFileAttributes(PChar(FileName));
attrs := '';
if Bool(attributes and FILE_ATTRIBUTE_READONLY) then attrs := attrs + 'R';
if Bool(attributes and FILE_ATTRIBUTE_HIDDEN) then attrs := attrs + 'H';
if Bool(attributes and FILE_ATTRIBUTE_SYSTEM) then attrs := attrs + 'S';
if Bool(attributes and FILE_ATTRIBUTE_ARCHIVE) then attrs := attrs + 'A';
Edit4.text := attrs;
// 最終更新日付の取得
try
edit5.text := DateTimeToStr(FileDateToDateTime(FileAge(FileName)));
except
// ファイルが選択されていない場合(フォルダやドライブの場合)
on EConvertError do edit5.text := 'Not Available';
end;
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
// アイコンの再描画(画面外にフォームが出た場合など)
Drawicon(canvas.handle, 5, 170, FileInfo.hIcon);
end;
end.

以下のコメントは、その投稿者が所有するものでサイト管理者はコメントに関する責任を負いません。