Evo da ne otvaram novu temu....
Ne znam vise zasto me zeza..
Program bi trebao ovo raditi:
netko skine program i spremi ga recimo na c:\ disk..pokrene program i sada program treba sebe skopirati u c:\windows\prog.exe [to je u redu], zatim se pokrene taj program iz c:\windows\prog.exe te pobrise program koji je njega pokrenuo...nadam se da razumijete o cem pricam
znaci:
pokrenut c:\moj_program.exe
putanja "c:\moj_program.exe" je spremljena u c:\windows\ pod imenom prog_put.txt
program_moj.exe je skopiran u c:\windows\ pod imenom prog.exe
program c:\moj_program.exe pokrece c:\windows\prog.exe
c:\windows\prog.exe je pokrenut i uzima string iz c:\windows\prog_put.txt te brise taj program
problem je u tome sto se nakon kopiranja u c:\windows\.. znaci ako pokrenem taj program on opet sebe pokusava napraviti (iako po kodu nebi trebao), i ne obrise program ciju je putanju ucitao iz fajla..
evo koda:
Code:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Edit1: TEdit;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
putanja:string;
x:integer;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var S, T: TFileStream;
begin
edit1.Text:=application.ExeName;
if application.ExeName<>'C:\WINDOWS\prog.exe' then
begin
S := TFileStream.Create( application.ExeName, fmOpenRead );
try
T := TFileStream.Create( 'c:\WINDOWS\prog.exe',
fmOpenWrite or fmCreate );
try
T.CopyFrom(S, S.Size );
finally
T.Free;
end;
finally
S.Free;
end;
memo1.Lines.Clear;
memo1.Lines.Add(application.ExeName);
memo1.Lines.SaveToFile('c:\windows\prog_put.txt');
winexec('c:\windows\prog.exe',sw_show);
end;
if application.ExeName='C:\WINDOWS\prog.exe' then
begin
try
memo1.Lines.Clear;
memo1.Lines.LoadFromFile('c:\windows\prog_put.txt');
deletefile(memo1.Text);
except
showmessage('Fajl je vec obrisan!');
end;
end;
end;
end.