现谢谢各位.
解决方案 »
- 双击Delphi5工程或者其他文件不能直接打开,请遇到的人指条路?
- 如果把DELPHI 3, 4, 5+sql 6.5的程序移植到delphi 7+sql server 2000,可以嗎???
- 关于“我申请此解释为年度最火星的解释”
- “内存表”是什么意思?
- 如何用ie打开一个.url文件
- 利用ADODATASET怎样对DBGRID进行分页?
- 如何用session获取数据库别名的路径? GetNamePath吗? 如何操作?
- 为什么执行adoquery1.insert后,所增加的记录是在数据库的最后呢?
- 有关dll和ado的问题!!!答对的一定给分
- 小妹?^_^?捉虫: 关于BDE和ADO-------
- 如何积累代码的复用或者说以什么样的方式来保存已有的代码?
- 请问:怎么才能让DBGrid中的列宽不变,(如果不约束的话是随着数据库中的长度来变的吧)?
文件操作而已至于细节,就自己研究了http://lysoft.7u7.net
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
FLegalTrades := 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);
end
else
begin
MessageBox(Application.handle,'无版本信息!','asd',MB_OK);
end;
end;
我没有书,请把源码发到:[email protected], 万分感谢.
快乐老猫(无米下炊)
Delphi下的那个Demo是的,没找到.谢谢.
var
n, Len: DWORD;
Buf: PChar;
Value: PChar;
begin
result := '';
n := GetFileVersionInfoSize(PChar(fn), n);
if n > 0 then
begin
Buf := AllocMem(n);
GetFileVersionInfo(PChar(fn), 0, n, Buf);
//080404b0 PRC unicode
//040904E4 english multilingual
//080403a8 prc unknown
if VerQueryValue(Buf, PChar('StringFileInfo\080403a8\productVersion'),Pointer(Value), Len) then
result := String(Value);
FreeMem(Buf, n);
end;
end;