document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. //******************************************************************************
  2. //* UNIT:         UNT_CloneFileInfo
  3. //* AUTOR:        Fakedo0r
  4. //* FECHA:        10.04.2012
  5. //* CORREO:       Luvel88@gmail.com
  6. //* BLOG:         Sub-Soul.blogspot.com
  7. //* REFERENCIA:   MSDN
  8. //* USO:          CloneFileInfoAPI(\'Ruta\\Origen.exe\', \'Ruta\\Destino.exe\');
  9. //******************************************************************************
  10. unit UNT_CloneFileInfo;
  11. //******************************************************************************
  12. //DECLARACION DE LIBRERIAS / CLASES
  13. //******************************************************************************
  14. interface
  15.  
  16. uses
  17.   Windows, Messages, Dialogs, SysUtils, ShlObj;
  18. //******************************************************************************
  19. //DECLARACION DE FUNCIONES / METODOS
  20. //******************************************************************************
  21. function CloneFileInfoAPI(sSource: String; sDestin: String): Bool;
  22. //******************************************************************************
  23. implementation
  24. //******************************************************************************
  25. //<--- CLONA LA INFORMACION DEL EJECUTABLE --->
  26. //******************************************************************************
  27. function CloneFileInfoAPI(sSource: String; sDestin: String): Bool;
  28. var
  29.   dwRes:        DWORD;
  30.   dwFile:       DWORD;
  31.   dwSize:       DWORD;
  32.   dwLangID:     DWORD;
  33.   dwSrcSize:    DWORD;
  34.   dwDestSize:   DWORD;
  35.   bSrcData:     TBytes;
  36.   bDestData:    TBytes;
  37.   ptrBuffer:    Pointer;
  38. begin
  39.   Result := True;
  40.   dwRes:= 0;
  41.   dwLangID := 0;
  42.   dwSrcSize := 0;
  43.   dwDestSize := 0;
  44.  
  45.   dwSrcSize := GetFileVersionInfoSize(PChar(sSource), dwFile);
  46.  
  47.   if dwSrcSize = 0 then
  48.   begin
  49.     Result := False;
  50.     Exit;
  51.   end;
  52.  
  53.   SetLength(bSrcData, dwSrcSize);
  54.   GetFileVersionInfo(PChar(sSource), dwFile, dwSrcSize, @bSrcData[0]);
  55.  
  56.   dwDestSize := GetFileVersionInfoSize(PChar(sSource), dwFile);
  57.  
  58.   if dwDestSize = 0 then
  59.   begin
  60.     Result := False;
  61.     Exit;
  62.   end;
  63.  
  64.   SetLength(bDestData, dwDestSize);
  65.   GetFileVersionInfo(PChar(sDestin), dwFile, dwDestSize, @bDestData[0]);
  66.  
  67.   VerQueryValue(@bDestData[0], PChar(\'\\VarFileInfo\\Translation\'), ptrBuffer, dwSize);
  68.   dwRes := BeginUpdateResource(PChar(sDestin), False);
  69.  
  70.   CopyMemory(@dwLangID, ptrBuffer, 2);
  71.   UpdateResource(dwRes, RT_VERSION, PChar(VS_VERSION_INFO), dwLangID, @bSrcData[0], dwSrcSize);
  72.   EndUpdateResource(dwRes, False);
  73. end;
  74.  
  75. end.
');