Глобальная переменная SysInit.HInstance инициализируется для exe модуля в SysInit._InitExe вызовом HInstance := GetModuleHandle(nil)
Фактически значение данной переменной - это указатель на адрес в памяти по которому загружен PE модуль.
Используя этот адрес можно, например, получить дату сборки проекта, получив прямой доступ к PE заголовку файла в памяти:
function GetLinkDate: TDateTime;
begin
Result := FileDateToDateTime
(PInteger(
PImageNtHeaders(
Cardinal(PImageDosHeader(HInstance)._lfanew) + HInstance)^
.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_RESOURCE]
.VirtualAddress + HInstance + 4
)^);
end;
Комментариев нет:
Отправить комментарий