A couple of things.
- Don't run this from the editor, the script has to have a name on the file system to be deleted,
- There is an Exit>0 line 9 lines down from the top. It's there to prevent the sample from deleting itself. It needs to be remarked or removed for the script to delete itself.
- After successfully running and deleting the script, the script name will still display in the main menu. You'll need to manually delete the entry.
- My intent was to have an executable that would delete itself. This script will work compiled.
Much of the script is example foolishness. The seven lines that are important are where the script creates a batch file that is set up to delete the script (four lines). The script then runs the batch file and exits so that the script is no longer an active process (three lines). This allows the batch file to delete the script. The batch file then deletes itself. I suppose a batch file can delete itself because its running in a command shell process rather than in its own process?
Code: Select all
//Check to make sure there is a filename to work with
ExtractFileName>script_file,vFres
If>vFres=__debug.scp
MDL>You have not given your script a name. Can't self destruct a nameless script.
Exit>0
EndIf
//Safety net for keeping a copy that won't self destruct.
//Remark or remove this exit line to self destruct this script.
exit>0
//Create the batch file that deletes the script then itself.
WriteLn>%Temp_dir%SelfDestruct.bat,wres,Timeout 1
WriteLn>%Temp_dir%SelfDestruct.bat,wres,Del "%script_File%"
WriteLn>%Temp_dir%SelfDestruct.bat,wres,Timeout 1
WriteLn>%Temp_dir%SelfDestruct.bat,wres,del "%Temp_dir%SelfDestruct.bat"
//Set the run program options to not wait for the program to complete.
Let>RP_Wait=0
Let>RP_Windowmode=0
//Move the message box to the top of the screen
Let>msg_yPos=10
Message>
//Change the message box name
GetWindowHandle>Macro Scheduler Message,vWinHandle
LibFunc>user32,SetWindowTextA,res,vWinHandle,Good Luck %user_name%
//Count down the time in the message box
Let>vTimeout=15
Repeat>vTimeout
SetControlText>Good Luck %user_name%,TMemo,1,As always, should you or any of your MS Force be detected or inspected, the forum will disavow any knowledge of your behavior (behaviour). This file will self destruct in %vTimeout% seconds.
Sub>vTimeout,1
Wait>0.999
Until>vTimeout=0
//pfffffffffft
SetControlText>Good Luck %user_name%,TMemo,1,%crlf%%crlf%%tab%P f f f f f f f f f f f f f f f f t
Wait>1
CloseWindow>Good Luck %user_name%
//Run the self destruct batch file and the script ends
RunProgram>%Temp_dir%SelfDestruct.bat
Exit>1