Глобальная переменная 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;
Комментариев нет:
Отправить комментарий