मैं अपने डेल्फी कार्यक्रम को कैसे हटा सकता हूं? मैंने इस कोड को आजमाया:डेल्फी स्वयं-हटाना कार्यक्रम
procedure DeleteSelf;
var
module : HMODULE;
buf : array [ 0 .. MAX_PATH - 1 ] of char;
p : ULONG;
hKrnl32 : HMODULE;
pExitProcess, pDeleteFile, pFreeLibrary : pointer;
begin
module := GetModuleHandle (nil);
GetModuleFileName (module, buf, sizeof (buf));
CloseHandle (THandle (4));
p := ULONG (module) + 1;
hKrnl32 := GetModuleHandle ('kernel32');
pExitProcess := GetProcAddress (hKrnl32, 'ExitProcess');
pDeleteFile := GetProcAddress (hKrnl32, 'DeleteFileA');
pFreeLibrary := GetProcAddress (hKrnl32, 'FreeLibrary');
asm
lea eax, buf
push 0
push 0
push eax
push pExitProcess
push p
push pDeleteFile
push pFreeLibrary
ret
end;
end;
लेकिन यह काम नहीं करता है, फ़ाइल को हटाएं नहीं। मेरा कार्यक्रम कंसोल है। धन्यवाद!
आप वास्तव में क्या करने की कोशिश कर रहे हैं? बस बाहर निकलने में क्या गलत है? यह Win16 के लिए एक रास्ता वापसी की तरह दिखता है। – bmargulies
एकमात्र तरीका जिसे मैं संभव देखता हूं वह एक और प्रोग्राम (या बैच फ़ाइल) को कॉल करके होता है जो ऐप से बाहर निकलने पर ऐसा करता है। ऐसा करने के लिए किसी अन्य बाहरी सहायक के आधार पर किसी ऐप को अपने आप को हटाने के लिए यह सचमुच असंभव है। –
तो एकमात्र समाधान फ़ाइल बनाना है। बल्ला? –