5,557,686 members and growing! (13,860 online)
Email Password   helpLost your password?
Desktop Development » Files and Folders » Files     Intermediate

Retrieve detailed information of a File

By cuepack

The article shows how to get the detailed information of a file like comments, author...
C#Windows, .NET, .NET 1.0, .NET 1.1, NT4, Win2K, WinXP, Win2003VS.NET2002, VS.NET2003, Visual Studio, Dev

Posted: 14 Aug 2004
Updated: 14 Aug 2004
Views: 54,073
Bookmarked: 26 times
Announcements
Want a new Job?



Search    
Advanced Search
Sitemap
11 votes for this Article.
Popularity: 4.33 Rating: 4.15 out of 5
0 votes, 0.0%
1
1 vote, 9.1%
2
1 vote, 9.1%
3
4 votes, 36.4%
4
5 votes, 45.5%
5

Sample Image - DetailFileInfo.jpg

Introduction

This article shows, how one omitted the detail information of a file under the use of the Shell32.dll from the Windows system. Some detailed information are: Comment, Title, Subject, Category, Author, and so on.

Background

The Windows system could store additional information like author, comment, title, category... to a file, this information can be read with GetDetailsOf method from the shell32.dll.

Using the code

First of all, add a new COM reference "Microsoft Shell Controls and Automation" (shell32.dll) to your Project.

After adding the reference, simple create an instance of the CFileInfo class as in the demo project. To access the File Information, simply read the properties from the class.

try{
  // Read File Details from CFileInfo Object

  CFileInfo oDetailedFileInfo = new CFileInfo(sFileName);
  txtName.Text = oDetailedFileInfo.FileName;
  txtFiletype.Text = oDetailedFileInfo.FileType;
  txtFileSize.Text = oDetailedFileInfo.FileSize.ToString();
  txtAuthor.Text = oDetailedFileInfo.FileAuthor;
  txtCategory.Text = oDetailedFileInfo.FileCategory;
  txtComment.Text = oDetailedFileInfo.FileComment;
  txtSubject.Text = oDetailedFileInfo.FileSubject;
  txtTitle.Text = oDetailedFileInfo.FileTitle;
}catch(Exception ex){
  MessageBox.Show("Could not read File information\r\n" 
                  + ex.Message, "Error while getting Info", 
                  MessageBoxButtons.OK,MessageBoxIcon.Error);
}

Behind the Scenes

The GetDetailedFileInfo method gets all available information of a file into an ArrayList. The DetailedFileInfo class is a helper class for holding the information in a simple object within the ArrayList.

// Getting all the available Information of a File into a Arraylist

private ArrayList GetDetailedFileInfo(string sFile){
  ArrayList aReturn = new ArrayList();
  if(sFile.Length>0){
    try{
      // Creating a ShellClass Object from the Shell32

      ShellClass sh = new ShellClass();
      // Creating a Folder Object from Folder that inculdes the File

      Folder dir = sh.NameSpace( Path.GetDirectoryName( sFile ) );
      // Creating a new FolderItem from Folder that includes the File

      FolderItem item = dir.ParseName( Path.GetFileName( sFile ) );
      // loop throw the Folder Items

      for( int i = 0; i < 30; i++ ) {
        // read the current detail Info from the FolderItem Object

        //(Retrieves details about an item in a folder. 

        //For example, its size, type, or the time 

        //of its last modification.)


        // some examples:

        // 0 Retrieves the name of the item. 

        // 1 Retrieves the size of the item.

        // 2 Retrieves the type of the item.

        // 3 Retrieves the date and time that the item was last modified.

        // 4 Retrieves the attributes of the item.

        // -1 Retrieves the info tip information for the item. 


        string det = dir.GetDetailsOf( item, i );
        // Create a helper Object for holding the current Information

        // an put it into a ArrayList

        DetailedFileInfo oFileInfo = new DetailedFileInfo(i,det);
        aReturn.Add(oFileInfo);
      }

    }catch(Exception){

    }
  }
  return aReturn;
}
...

// Helper Class from holding the detailed File Informations

// of the System

public class DetailedFileInfo{
  int iID = 0;
  string sValue ="";

  public int ID{
    get{return iID;}
    set{iID=value;}
  }
  public string Value{
    get{return sValue;}
    set{sValue = value;}
  }

  public DetailedFileInfo(int ID, string Value){
    iID = ID;
    sValue = Value;
  }
}

History

  • First release - 15th August 2004.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author

cuepack



Occupation: Web Developer
Location: Germany Germany

Other popular Files and Folders articles:

Article Top
Sign Up to vote for this article
You must Sign In to use this message board.
FAQ FAQ Noise ToleranceSearch Search Messages 
 Layout  Per page   
 Msgs 1 to 23 of 23 (Total in Forum: 23) (Refresh)FirstPrevNext
Subject  Author Date 
QuestionGet SummarymemberJackielu200422:04 27 Aug '08  
GeneralNo Keyword?memberMember 9914488:56 29 May '08  
GeneralVISTA Supportmemberalmkristl12:40 27 Aug '07  
GeneralRe: VISTA SupportsussJasonJ8:02 4 Dec '07  
GeneralMapped Drive Problemmemberdwarf8817:52 8 Aug '07  
GeneralRevision NumbermemberAwaKe2:36 15 Feb '06  
QuestionLastSavedBy namemembera_kavitha03@yahoo.co.in0:13 21 Dec '05  
Generalshell32.dllmembererobles2k@yahoo.com10:28 6 Oct '05  
QuestionRe: shell32.dllmemberrreeder3:38 28 Feb '07  
GeneralReading info from CDmemberSemt-x10:36 7 Apr '05  
GeneralWriting This InformationmemberFinallyInSeattle9:19 6 Apr '05  
GeneralWindows 2000memberRobertBoe0:54 28 Feb '05  
GeneralRe: Windows 2000membercuepack22:21 22 Mar '05  
GeneralRe: Windows 2000memberRobertBoe6:25 23 Mar '05  
GeneralHow to WRITE this data?memberJohn Hind9:09 22 Oct '04  
GeneralRe: How to WRITE this data?sussAnonymous5:45 4 Mar '05  
GeneralRe: How to WRITE this data?sussAnonymous23:08 1 Sep '05  
GeneralRe: How to WRITE this data?member~Dim~7:03 27 Mar '07  
GeneralEnhancementmemberAllanY1:35 19 Aug '04  
GeneralDemoSourceCode ?memberAntonio Barros2:39 16 Aug '04  
GeneralRe: DemoSourceCode ?membercuepack4:47 16 Aug '04  
GeneralLooks good!memberLabrat00214:49 15 Aug '04  
GeneralRe: Looks good!membercuepack4:49 16 Aug '04  

General General    News News    Question Question    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

PermaLink | Privacy | Terms of Use
Last Updated: 14 Aug 2004
Editor: Smitha Vijayan
Copyright 2004 by cuepack
Everything else Copyright © CodeProject, 1999-2008
Web07 | Advertise on the Code Project