65.9K
CodeProject 正在变化。 阅读更多。
Home

版本读取组件( 类似于 Explorer 的“版本”选项卡)

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.44/5 (8投票s)

2006年12月22日

1分钟阅读

viewsIcon

27991

downloadIcon

570

封装在简单组件中的版本 API。

Sample Image

引言

本文介绍了一个简单的 COM 对象,用于读取给定文件的版本信息。返回的版本信息与 Windows 资源管理器中文件属性的“版本”选项卡中显示的信息相同。

背景

使用此组件非常容易。最初,我将此代码设计为 C++ 类,构造函数接受文件名作为参数。然后,我决定将其制作成 COM 组件,以满足更广泛的受众(并且我也可以在脚本中使用它)。它可以用于支持 COM 的任何语言,但如果您有兴趣了解 Win32 版本 API,那么您可能需要在 MSDN 中查找以下函数:GetFileVersionInfoSize()GetFileVersionInfo()VerQueryValue()

使用代码

熟悉在 VB6、.NET 或 C++ 中使用 COM 组件的任何人都可以使用此代码。我提供了一个可用的 C++ 版本,它将简单地以 CSV(逗号分隔值)格式打印它在命令行中接收到的文件的版本。然后,我使用此程序在批处理文件中,使用“for”命令为位于 windows\system32\drivers 中的所有驱动程序版本生成一个 *.csv 文件。我喜欢 *.csv 格式,因为它是在 Microsoft Excel(或您用于格式化输出以使其更具吸引力)中放置数据的最简单方法。目前,仅编程了 MSDN 中提到的字段,但通过在 VersionFieldArray 中添加条目并在 VersionFieldEnum 中添加另一个枚举值,很容易构建自己的版本。然后,添加相应的属性。

// use this array to extend for more fields
const tstring VersionFieldArray[] = { 
                                        _T("Comments"), 
                                        _T("CompanyName"), 
                                        _T("FileDescription"), 
                                        _T("FileVersion"), 
                                        _T("InternalName"), 
                                        _T("LegalCopyright"), 
                                        _T("LegalTrademarks"), 
                                        _T("OriginalFilename"), 
                                        _T("PrivateBuild"), 
                                        _T("ProductName"), 
                                        _T("ProductVersion"), 
                                        _T("SpecialBuild")
                                    };
// use this enumeration along with above array
enum VersionFieldEnum
{
    Comments,
    CompanyName,
    FileDescription,
    FileVersion,
    InternalName,
    LegalCopyright,
    LegalTrademarks,
    OriginalFilename,
    PrivateBuild, 
    ProductName,
    ProductVersion,
    SpecialBuild,
    MaxVersionFields
};

历史

2007年1月1日 - 更新下载

© . All rights reserved.