计算机二级:Delphi自动获取软件版本信息的类计算机二级考试
文章作者 100test 发表时间 2009:05:07 18:06:38
来源 100Test.Com百考试题网
2009年下半年全国计算机等级考试你准备好了没?考计算机等级考试的朋友,2009年下半年全国计算机等级考试时间是2009年9月19日至23日。更多优质资料尽在百考试题论坛 百考试题在线题库
unit untVersion.
{----------------------------------
*Description:自动获取应用程序的版本信息
*Create by: Derry Zhang
*Create on: 2008-11-26
-----------------------------------}
interface
uses
Windows, Forms, SysUtils.
type
TVersion = class(TObject)
private
FCompanyName: string.
FFileDescription: string.
FFileVersion: string.
FInternalName: string.
FLegalCopyright: string.
FLegalTradeMarks: string.
FOriginalFileName: string.
FProductName: string.
FProductVersion: string.
procedure GetCodeVersion.
public
constructor Create.
property CompanyName: string read FCompanyName.
property FileDescription: string read FFileDescription.
property FileVersion: string read FFileVersion.
property InternalName: string read FInternalName.
property LegalCopyright: string read FLegalCopyright.
property LegalTradeMarks: string read FLegalTradeMarks.
property OriginalFileName: string read FOriginalFileName.
property ProductName: string read FProductName.
property ProductVersion: string read FProductVersion.
end.
implementation
constructor TVersion.Create.
begin
GetCodeVersion.
inherited.
end.
procedure TVersion.GetCodeVersion.
const
InfoNum = 9.
InfoStr: array[1..InfoNum] of string = (
ProductName ,
ProductVersion ,
FileDescription ,
LegalCopyright ,
FileVersion ,
CompanyName ,
LegalTradeMarks ,
InternalName ,
OriginalFileName
).
var
S: string.
BufSize, Len: DWORD.
Buf: PChar.
Value: PChar.
begin
S := Application.ExeName.
BufSize := GetFileVersionInfoSize(PChar(S), BufSize).
if BufSize >. 0 then begin
Buf := AllocMem(BufSize).
GetFileVersionInfo(PChar(S), 0, BufSize, Buf).
//产品名称
if VerQueryValue(Buf, PChar( StringFileInfo\080403A8\ InfoStr[1]), Pointer(Value), Len) then
FProductName := Value.
//产品版本
if VerQueryValue(Buf, PChar( StringFileInfo\080403A8\ InfoStr[2]), Pointer(Value), Len) then
FProductVersion := Value.
//文件描述
if VerQueryValue(Buf, PChar( StringFileInfo\080403A8\ InfoStr[3]), Pointer(Value), Len) then
FFileDescription := Value.
//合法商标
if VerQueryValue(Buf, PChar( StringFileInfo\080403A8\ InfoStr[4]), Pointer(Value), Len) then
FLegalCopyright := Value.
//文件版本-“关于”对话框中版本栏应该使用
if VerQueryValue(Buf, PChar( StringFileInfo\080403A8\ InfoStr[5]), Pointer(Value), Len) then
FFileVersion := Value.
//公司名称
if VerQueryValue(Buf, PChar( StringFileInfo\080403A8\ InfoStr[6]), Pointer(Value), Len) then
FCompanyName := Value.
//合法商标
if VerQueryValue(Buf, PChar( StringFileInfo\080403A8\ InfoStr[7]), Pointer(Value), Len) then
FLegalTrademarks := Value.
//内部名称
if VerQueryValue(Buf, PChar( StringFileInfo\080403A8\ InfoStr[8]), Pointer(Value), Len) then
FInternalName := Value.
//原文件名
if VerQueryValue(Buf, PChar( StringFileInfo\080403A8\ InfoStr[9]), Pointer(Value), Len) then
FOriginalFilename := Value.
FreeMem(Buf, BufSize).
//OperatingSystem.Caption := GetOSVerInfo.
//SystemMemory.Caption := GetMemStat.
end
else
begin
Application.MessageBox( 获取产品信息时遇到致命错误,请尝试重新启动软件。 #13 若仍未能解决问题,请联系产品服务人员。 , 错误 ,MB_OK MB_ICONSTOP).
end.
end.
特别推荐:
2009年9月全国计算机等级考试时间及科目预告