begin S := Application.ExeName; n := GetFileVersionInfoSize(PChar(S), n); if n > 0 then begin Buf := AllocMem(n); Memo1.Lines.Add('VersionInfoSize = ' + IntToStr(n)); GetFileVersionInfo(PChar(S), 0, n, Buf); for i := 1 to InfoNum do if VerQueryValue(Buf, PChar('StringFileInfo\040904E4\' + InfoStr[i]), Pointer(Value), Len) then Memo1.Lines.Add(InfoStr[i] + ' = ' + Value); FreeMem(Buf, n); end else Memo1.Lines.Add('No version information found');end;可以从中找到.
n := GetFileVersionInfoSize(PChar(S), n); 这个还是获取文档版本信息啊,里面有公司、语言等信息,没有作者信息。而我们都知道作者是在摘要里的,现在其实关键如何得到摘要信息
procedure TAbout_F.FormCreate(Sender: TObject);
const
InfoNum = 10;
InfoStr: array[1..InfoNum] of string = ('CompanyName', 'FileDescription', 'FileVersion', 'InternalName', 'LegalCopyright', 'LegalTradeMarks', 'OriginalFileName', 'ProductName', 'ProductVersion', 'Comments');
var
S: string;
n, Len, i: DWORD;
Buf: PChar;
Value: PChar;
begin
S := Application.ExeName;
n := GetFileVersionInfoSize(PChar(S), n);
if n > 0 then
begin
Buf := AllocMem(n);
Memo1.Lines.Add('VersionInfoSize = ' + IntToStr(n));
GetFileVersionInfo(PChar(S), 0, n, Buf);
for i := 1 to InfoNum do
if VerQueryValue(Buf, PChar('StringFileInfo\040904E4\' + InfoStr[i]), Pointer(Value), Len) then
Memo1.Lines.Add(InfoStr[i] + ' = ' + Value);
FreeMem(Buf, n);
end
else
Memo1.Lines.Add('No version information found');end;可以从中找到.
这个还是获取文档版本信息啊,里面有公司、语言等信息,没有作者信息。而我们都知道作者是在摘要里的,现在其实关键如何得到摘要信息
自己试试比如word 就是在版本信息部分,海天子是不是也是这种方法?
可是WORD文档根本不包含版本信息,所以n为0
我换了一个setup.exe,里面包含版本信息,就可以成功读取,但也没有作者信息,只是一些公司名、版本号之类的。
pdf就好像不行吧~
没有人有义务要帮助谁,这是论坛的常规,这我很理解,但只希望高手们能够在这里游逛之余多尽一份力量。不多说了,这是个老话题了,以前在VB和JAVA中也是这样。
這麼都比較麻煩的, 你要知道文件的格式!!!