We don't display ads so we rely on your Bitcoin donations to 1KWEk9QaiJb2NwP5YFmR24LyUBa4JyuKqZ
Post date: Mar 14, 2010 2:02:48 AM
Example:
.rar returns "WinRAR archive"
.txt returns "Text Document"
and
.png returns "PNG Image".
function GetFileTypeDescription(FileName: String): String;
function GetFileTypeRegKey(FileName: String; out Key: HKEY): Integer;
function GetFileTypeDescription(FileName: String): String;
var hkExtType: HKEY;
lpszDesc: Array [0..1024] of Char;
dwSize: DWORD;
begin
// Attempt to get the registry key for the extension type
if (GetFileTypeRegKey(FileName, hkExtType) = ERROR_SUCCESS) then
begin
// Resource protection
try
// Set size of buffer
dwSize:=SizeOf(lpszDesc);
// Get the description for the file extension
if (RegQueryValueEx(hkExtType, nil, nil, nil, @lpszDesc, @dwSize) = ERROR_SUCCESS) then
// Return the description
SetString(result, PChar(@lpszDesc), dwSize)
else
// Failed to get result
SetLength(result, 0);
finally
// Close the registry key
RegCloseKey(hkExtType);
end;
end
else
// Failed to get result
SetLength(result, 0);
end;
function GetFileTypeRegKey(FileName: String; out Key: HKEY): Integer;
var hkExt: HKEY;
lpszTypeKey: Array [0..1024] of Char;
dwSize: DWORD;
szExt: String;
begin
// Get the file extension
szExt:=ExtractFileExt(FileName);
// Attempt to open the registry key
result:=RegOpenKeyEx(HKEY_CLASSES_ROOT, PChar(szExt), 0, KEY_READ, hkExt);
// Check result of open
if (result = ERROR_SUCCESS) then
begin
// Resource protection
try
// Set size of buffer
dwSize:=SizeOf(lpszTypeKey);
// Query for the default value which is the redirect to the extension type key
result:=RegQueryValueEx(hkExt, nil, nil, nil, @lpszTypeKey, @dwSize);
// Check result
if (result = ERROR_SUCCESS) then
begin
// Open the redirect to the extension type key
result:=RegOpenKeyEx(HKEY_CLASSES_ROOT, @lpszTypeKey, 0, KEY_READ, Key);
end
finally
// Close the opened key
RegCloseKey(hkExt);
end;
end;
end;