Собственно, вот мой кодес, точнее моего тут почти ничего нет. Это код самоудаления, если убрать API функции и проигклудить модули shellapi и windows, то всё корректно отрабатывает. Интересно, в чём же причина....
Код:
program Project1;
const
MAX_PATH = 260;
SW_SPOILER = 0;
type
Dword = longword;
HWND = longword;
//-------------API_Fun-----------------------
function GetShortPathName(lpszLongPath: PChar; lpszShortPath: PChar; cchBuffer: DWORD): DWORD; stdcall; external 'kernel32.dll' name 'GetShortPathNameA';
function GetEnvironmentVariable(lpName: PChar; lpBuffer: PChar; nSize: DWORD): DWORD; external 'kernel32.dll' name 'GetEnvironmentVariableA';
function ShellExecute(hWnd: HWND; Operation, FileName, Parameters, Directory: PChar; ShowCmd: Integer): HINST; stdcall; external 'shell32.dll' name 'ShellExecuteA';
//-------------------------------------------
procedure SelfDelete;
var
P: array[0..MAX_PATH - 1] of Char;
S: string;
begin
if GetShortPathName(PChar(ParamStr(0)), P, MAX_PATH) <> 0 then
begin
S := '/C DEL ' + '"' + P + '"';
if GetEnvironmentVariable('ComSpec', P, MAX_PATH) <> 0 then
ShellExecute(0, nil, P, PChar(S), nil, SW_SPOILER);
end;
end;
var
st:integer;
begin
try
SelfDelete;
except end;
end.