有時想讓自制的VB程序實現“自殺”,也就是在運行后刪除自己,以達到特定的目的,其實代碼很簡單
Private Sub Command1_Click() '這是觸發條件引用killme
KillMe
End Sub
Sub KillMe() '這是執行的代碼
Open App.Path & "\temp.bat" For Output As #1
'"@echo off" 不顯示執行過程
Print #1, "@echo off"
Print #1, "sleep 100"
'temp.bat 刪除指定文件
Print #1, "del " & App.EXEName + ".exe"
'temp.bat 刪除自身
Print #1, "del temp.bat"
Print #1, "cls"
Print #1, "exit"
Close #1
Shell App.Path & "\temp.bat", vbHide
End
End Sub
還有一種代碼,可以實現在關閉程序后“自殺”的例子,使用方法同上,直接使用一個觸發條件引用killme就行
兩個 Killme 的代碼區別是:上面這個可以直接運行程序后自動關閉程序并刪除自己,下面這個需要在退出程序后才會自動刪除自己。
Public Sub KillMe()
Dim mPath As String
On Error GoTo InIDE
Debug.Print 1 / 0 '觸發IDE錯誤,上個保險算了
If Right$(App.Path, 1) = "\" Then
mPath = App.Path
Else
mPath = App.Path & "\"
End If
Open mPath & "Demon.bat" For Output As #1
Print #1, ":Repeat" & vbCrLf & _
"del """ & mPath & App.EXEName & ".exe""" & vbCrLf & _
"if exist """ & mPath & App.EXEName & ".exe""" & " goto Repeat" & vbCrLf & _
"del %0"
Close #1
Shell mPath & "Demon.bat", vbHide
InIDE:
End Sub