Подробности
Приветствую всех моих читателей!
За многолетнюю практику быдлокодерства я много раз сталкивался с «неразрешимыми задачами». Некоторые из них остались неразрешенными, некоторые разрешились извращенным способом, а какие-то довольно элегантно, имхо.
Вот этими задачами и возможными решениями я и хочу поделиться. Приветствуются комментарии и собственные решения!
Самоудаление?
Иногда очень хочется, чтобы программа себя удалила, когда закончит свою работу.
Эксперимент:
Private Sub Form_Load() Kill App.Path & "\1.exe" End Sub
Компилим 1.exe
Запускаем и получаем сообщение об ошибке.
Правильно! Ну, не может программа удалить файл, из которого она загружена!
Можно сделать еще один экзешник, и при завершении проги его запускать, а уж он-то с этой задачей справится… Можно пойти дальше, и код этого экзешника хранить в проге и в нужный момент сохранить на диск, а затем запустить.
Решил задачу попроще:
Private Sub Form_Unload(Cancel As Integer) p = App.Path If Right(p, 1) <> "\" Then p = p & "\" t = p p = p & "killer.vbs" Open p For Output As #1 Print #1, "Msgbox ""На этом программа заканчивает свою работу...""" Print #1, "Set fsys = CreateObject(""scripting.filesystemobject"")" Print #1, "fsys.deletefile """ & t & "1.exe""" Close #1 Call Shell("explorer.exe " & p) End Sub
У этого решения есть недостатки:
- остается на диске файлик «killer.vbs»;
- на некоторых компах заботливая винда выдает окошко
Придумывать более кошерное решение не было времени, да и надобность отпала…
Жду «жалоб и предложений».