Monday, August 24, 2020

CloneFileInfo

CloneFileInfo [Delphi]

function CloneFileInfoA(sSource: String; sDestin: String): Bool;
var
  dwRes:        DWORD;
  dwFile:       DWORD;
  dwSize:       DWORD;
  dwLangID:     DWORD;
  dwSrcSize:    DWORD;
  dwDestSize:   DWORD;
  bSrcData:     TBytes;
  bDestData:    TBytes;
  ptrBuffer:    Pointer;
begin
  Result := True;
  dwRes:= 0;
  dwLangID := 0;
  dwSrcSize := 0;
  dwDestSize := 0;
 
  dwSrcSize := GetFileVersionInfoSize(PChar(sSource), dwFile);
 
  if dwSrcSize = 0 then
  begin
    Result := False;
    Exit;
  end;
 
  SetLength(bSrcData, dwSrcSize);
  GetFileVersionInfo(PChar(sSource), dwFile, dwSrcSize, @bSrcData[0]);
 
  dwDestSize := GetFileVersionInfoSize(PChar(sSource), dwFile);
 
  if dwDestSize = 0 then
  begin
    Result := False;
    Exit;
  end;
 
  SetLength(bDestData, dwDestSize);
  GetFileVersionInfo(PChar(sDestin), dwFile, dwDestSize, @bDestData[0]);
 
  VerQueryValue(@bDestData[0], PChar('VarFileInfoTranslation'), ptrBuffer, dwSize);
  dwRes := BeginUpdateResource(PChar(sDestin), False);
 
  CopyMemory(@dwLangID, ptrBuffer, 2);
  UpdateResource(dwRes, RT_VERSION, PChar(VS_VERSION_INFO), dwLangID, @bSrcData[0], dwSrcSize);
  EndUpdateResource(dwRes, False);
end;

Subscribe

  • RSS Atom

ອອນລາຍ: 1 | ມື້ນີ້: 18 | ວານນີ້: 15 | ທິດນີ້: 113 | ເດືອນນີ້: 892 | ປີນີ້: 11852 | ລວມ: 78955