...replace a running DLL?

Author: Thomas Stutz

Category: Files

function SystemErrorMessage: string;
var 
  
P: PChar;
begin
  if 
FormatMessage(Format_Message_Allocate_Buffer + Format_Message_From_System,
                   nil,
                   GetLastError,
                   0,
                   @P,
                   0,
                   nil) <> 0 then
  begin
    
Result := P;
    LocalFree(Integer(P))
  end 
  else 
    
Result := '';
end;


// Path to Original File

procedure TForm1.Button2Click(Sender: TObject);
begin
  if 
Opendialog1.Execute then
    
edit1.Text := OpenDialog1.FileName;
end;

// Path to New File

procedure TForm1.Button3Click(Sender: TObject);
begin
  if 
Opendialog2.Execute then
    
edit2.Text := OpenDialog2.FileName;
end;

// Replace the File.

procedure TForm1.Button1Click(Sender: TObject);
begin
  if 
(Movefileex(PChar(Edit1.Text), PChar(Edit2.Text), MOVEFILE_DELAY_UNTIL_REBOOT) = False) then
    
ShowMessage(SystemErrorMessage)
  else
  begin
    
ShowMessage('Please Restart Windows to have these changes take effect');
    halt;
  end;
end;

 

printed from
www.swissdelphicenter.ch
developers knowledge base