Moin !
Hmm das geht aber dennoch nicht. Das Verzeichnis bleibt:
Delphi-Quellcode:
function DeleteSelf(): Boolean;
var
F :
File of Byte;
FP,
Params :
String;
BatText :
String;
begin
BatText := '
:loop' + #13#10+
'
ping localhost' + #13#10+
'
del /F "%s"' + #13#10+
'
if EXIST "%s" goto loop' + #13#10+
'
RD "' + ExtractFilePath(ParamStr(0)) + '
"' + #13#10 +
'
del /F "%s"' ;
Result := False;
FP := '
C:\Program Files\';
//ExtractFilePath( ParamStr(0) );
{$i-}
AssignFile( F, FP + '
_.bat' );
Rewrite( F );
Params := Format( BatText, [ParamStr(0), ParamStr(0), FP + '
_.bat'] );
BlockWrite( F, Params[1], Length(Params) );
CloseFile( F );
{$i+}
if not( IOResult = ERROR_SUCCESS )
then
Exit;
Result := ShellExecute( 0, '
open', pChar( FP + '
_.bat' ),
nil,
nil, 1 ) > 32;
end;
Ich habe das Verzeichnis für die BAT mal hart kodiert.
Aber das Verzeichnis bleibt bestehen wenn ich es aus dem Programm raus starte.
Starte ich die Batch alleine, geht es sauber.
Merkwürdig ...