2015-04-29 14 views

Trả lời

14

SHGetFileInfo là chức năng bạn cần. Bạn cần phải vượt qua cờ FILE_ATTRIBUTE_DIRECTORY làm tham số cho thông số dwFileAttributes.

Dựa trên số same answer you linked Tôi đã sửa đổi mã để làm cho nó hoạt động cho các thư mục.

public static string GetFileFolderTypeDescription(string fileNameOrExtension) 
{ 
    SHFILEINFO shfi; 
    if (IntPtr.Zero != SHGetFileInfo(
         fileNameOrExtension, 
         FILE_ATTRIBUTE_NORMAL | FILE_ATTRIBUTE_DIRECTORY, 
         out shfi, 
         (uint)Marshal.SizeOf(typeof(SHFILEINFO)), 
         SHGFI_USEFILEATTRIBUTES | SHGFI_TYPENAME)) 
    { 
     return shfi.szTypeName; 
    } 
    return null; 
} 
+2

Cảm ơn. Điều này làm việc tuyệt vời. Tôi đã quên 'FILE_ATTRIBUTE_DIRECTORY'. – YoYoYonnY

5

Có tệp có tên là desktop.ini trong mỗi thư mục, chứa mô tả thư mục đã dịch và biểu tượng cho thư mục ở định dạng tệp INI. Có lẽ bạn cần phải đọc điều đó.

Tôi thấy rằng đối với các thư mục hệ thống, tài liệu này tham chiếu tài nguyên bên trong các DLL hệ thống, vì vậy nó có thể không đơn giản như nó có vẻ.

Điều đó đang được nói, bạn cũng có thể thử chức năng SHGetFileInfo để nhận thông tin đó.


Chỉ thấy rằng Sriram Sakthivel đã đưa ra một câu trả lời rất hay bằng cách sử dụng SHGetFileInfo, vì vậy, hãy thực hiện điều đó.

+1

Bạn vừa mới đào tạo cho tôi về * desktop.ini *. Cảm ơn –

+0

@SriramSakthivel tôi quá ... – YoYoYonnY

Các vấn đề liên quan