Ver Mensaje Individual
  #4  
Antiguo 05-04-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Reputación: 24
seoane Va por buen camino
Se me ocurre que podemos utilizar el echo de que delphi coloca en sus ejecutables donde deberia de ir el timestamp siempre el mismo numero (sus razones tendran). Ignoro si este metodo que propongo es muy de fiar, puede que otros compiladores coloquen el mismo numero en el timestamp pero ya seria mucha casualidad

Bueno aqui te dejo esta funcion, le pasas como parametro la ruta del ejecutable y si esta echo en delphi devuelve TRUE
Código Delphi [-]
function isDelphi(Filename: string): Boolean;
const
  BorlandMagicTimeStamp = $2A425E19;
var
  hFile: THandle;
  BytesRead: DWORD;
  ImageDosHeader: TImageDosHeader;
  ImageNtHeaders: TImageNtHeaders;
begin
  Result := FALSE;
  hFile := CreateFile(PChar(Filename), GENERIC_READ, FILE_SHARE_READ, nil,
    OPEN_EXISTING, 0, 0);
  if (hFile <> INVALID_HANDLE_VALUE) then
  begin
    if ReadFile(hFile, ImageDosHeader, SizeOf(TImageDosHeader),BytesRead, nil) then
      if BytesRead = SizeOf(TImageDosHeader) then
        if ImageDosHeader.e_magic = IMAGE_DOS_SIGNATURE then
          if SetFilePointer(hFile, ImageDosHeader._lfanew, nil, FILE_BEGIN) <> $FFFFFFFF then
            if ReadFile(hFile, ImageNtHeaders, SizeOf(TImageNtHeaders), BytesRead, nil) then
              if BytesRead = SizeOf(TImageNtHeaders) then
                if ImageNtHeaders.Signature = IMAGE_NT_SIGNATURE then
                  Result:= ImageNtHeaders.FileHeader.TimeDateStamp = BorlandMagicTimeStamp;
    CloseHandle(hFile);
  end;
end;
Responder Con Cita