Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.01.08;
Скачать: CL | DM;

Вниз

Вывод версии *.exe   Найти похожие ветки 

 
Skiv ©   (2001-11-05 09:55) [0]

Можно ли прочесть верию файла без использования сторонних
компонент (классов) типа RX, LMD.


 
Digitman ©   (2001-11-05 10:27) [1]

Можно. Все эти компоненты в конечном итоге обращаются к WINAPI-вызовам
GetFileVersionInfo, GetFileVersionInfoSize, VerQueryValue. Как, впрочем, и все прочие компоненты : все они изнутри обращаются к API (говоря правильней - компоненты инкапсулируют ф-ции API)


 
Dimka Maslov ©   (2001-11-05 11:02) [2]


type // File version record type
PFileVersion = ^TFileVersion;
TFileVersion = record
HiVersion : Integer; // Major version number
LoVersion : Integer; // Minor version number
Release : Integer;
Build : Integer;
end;

function FileVersion(const FileName: TString = ""): TFileVersion;
var
S: TString;
hMem: HGLOBAL;
Buf: pointer;
BufSize, Len, dwHandle: DWORD;
VerInfo: PVSFixedFileInfo;
pszName: PAnsiChar;
begin
FillChar(Result, SizeOf(Result), 0);
S:=FileName;
CleanUp(S, True);
if IsEmptyStr(S) then S:=ParamStr(0);
pszName:=@S[1];
BufSize:=GetFileVersionInfoSize(pszName, dwHandle);
if BufSize<>0 then begin
hMem:=GlobalAlloc(GHND, BufSize);
if hMem = 0 then OutOfMemoryError;
Buf:=GlobalLock(hMem);
if Buf=nil then OutOfMemoryError;
GetFileVersionInfo(pszName, dwHandle, BufSize, Buf);
VerQueryValue(Buf, "\", pointer(VerInfo), Len);
with VerInfo^ do begin
Result.HiVersion:=HiWord(dwFileVersionMS);
Result.LoVersion:=LoWord(dwFileVersionMS);
Result.Release:=HiWord(dwFileVersionLS);
Result.Build:=LoWord(dwFileVersionLS);
end;
GlobalUnlock(hMem);
GlobalFree(hMem);
end else Result.HiVersion:=-1;
end;



 
Dimka Maslov ©   (2001-11-05 11:06) [3]

В примере нужно убрать CleanUp(S, True), a вызов IsEmptyStr(S)заменить на S = "", а TString на string



Страницы: 1 вся ветка

Текущий архив: 2002.01.08;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.01 c
14-22382
panov
2001-11-08 18:54
2002.01.08
продолжение http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1005233643&n=3


14-22410
fint
2001-11-08 15:10
2002.01.08
Попробуйте


14-22386
Дремучий
2001-11-08 21:13
2002.01.08
Интересно? Насколько?


3-21975
Dr. Web
2001-12-06 09:12
2002.01.08
создание базы Interbase из программы


1-22147
vinni2000
2001-12-20 12:59
2002.01.08
Нужен совет по RichEdit!!!!!!!!