Programm schließen

sunflower84

Erfahrenes Mitglied
Hallo
Ich habe einen Countdown gemacht. Ich drück auf Start und er fängt an. Ich habe jetzt noch einen Button close gemacht der die Anwendung einfach schließen soll. Wie mach ich das mit dem Button close? Die Anwendung soll einfach nur geschlossen werden.
Es ist wirklich total dringend. Danke im voraus.

Option Explicit

Private Declare Function ExitWindowsEx Lib "user32" (ByVal dwOptions As Long, ByVal dwReserved As Long) As Long

Private Const WIN_LOGOFF = 0

Dim s As Integer
Dim m As Integer
Dim h As Integer
Dim sec As Integer
Dim min As Integer
Dim hour As Integer




Private Sub close_Click()

End Sub


Private Sub cmdStartTimer_Click()

Timer1.Interval = 1000
Timer1.Enabled = True
'fester Wert eintragen
s = 0
m = 18
h = 0
Label1.Caption = Format(h & " :" & m & " :" & s, "Long Time")
Do
DoEvents
cmdStartTimer.Enabled = False
If h = 0 And m = 3 And s = 0 Then
MsgBox "15 minutes allowance are over. Please finish your work now.", vbOKOnly + vbSystemModal
End If
Loop Until s = 0 And m = 0 And h = 0
Label1.ForeColor = vbRed
'MsgBox (NameC1 & "abgelaufen")
Timer1.Enabled = False
'Call ExitWindowsEx(WIN_LOGOFF, &HFFFF)
frmLock.Visible = True
Unload Me
End Sub

Private Sub Label9_Click()

End Sub

Private Sub Timer1_Timer()
s = s - 1
If s < 0 And m > 0 Then
m = m - 1
s = 59
ElseIf m <= 0 And h > 0 And s < 0 Then
h = h - 1
m = 59
s = 59
End If
Label1.Caption = Format(h & " :" & m & " :" & s, "Long Time")
End Sub
 
Hallo, ich habe den einzufügenden Code markiert.
Code:
Option Explicit

Private Declare Function ExitWindowsEx Lib "user32" (ByVal dwOptions As Long, ByVal dwReserved As Long) As Long

Private Const WIN_LOGOFF = 0

Dim s As Integer
Dim m As Integer
Dim h As Integer
Dim sec As Integer
Dim min As Integer
Dim hour As Integer

' *******************************************
Dim Abbruch As Boolean ' einfügen ***********
' *******************************************

Private Sub close_Click()
  Abbruch = True
  Unload Me
End Sub

Private Sub cmdStartTimer_Click()

' *******************************************
Abbruch = False ' einfügen ******************
' *******************************************

Timer1.Interval = 1000
Timer1.Enabled = True
'fester Wert eintragen
s = 0
m = 18
h = 0
Label1.Caption = Format(h & " :" & m & " :" & s, "Long Time")

Do

' *******************************************
If Abbruch Then Exit Do ' einfügen **********
' *******************************************

DoEvents
cmdStartTimer.Enabled = False
If h = 0 And m = 3 And s = 0 Then
MsgBox "15 minutes allowance are over. Please finish your work now.", vbOKOnly + vbSystemModal
End If
Loop Until s = 0 And m = 0 And h = 0
Label1.ForeColor = vbRed
'MsgBox (NameC1 & "abgelaufen")
Timer1.Enabled = False
'Call ExitWindowsEx(WIN_LOGOFF, &HFFFF)
'frmLock.Visible = True
Unload Me
End Sub

Private Sub Label9_Click()

End Sub

Private Sub Timer1_Timer()
s = s - 1
If s < 0 And m > 0 Then
m = m - 1
s = 59
ElseIf m <= 0 And h > 0 And s < 0 Then
h = h - 1
m = 59
s = 59
End If
Label1.Caption = Format(h & " :" & m & " :" & s, "Long Time")
End Sub
 
Also bei mir funktioniert es leider nicht. Wäre lieb wenn du nochmal drüber schauen würdest. Wahrscheinlich habe ich was falsch gemacht.

Option Explicit

Private Declare Function ExitWindowsEx Lib "user32" (ByVal dwOptions As Long, ByVal dwReserved As Long) As Long

Private Const WIN_LOGOFF = 0

Dim s As Integer
Dim m As Integer
Dim h As Integer
Dim sec As Integer
Dim min As Integer
Dim hour As Integer
Dim Abbruch As Boolean




Private Sub close_Click()
Abbruch = True
Unload Me

End Sub

Private Sub cmdStartTimer_Click()

Timer1.Interval = 1000
Timer1.Enabled = True
'fester Wert eintragen
s = 0
m = 18
h = 0
Label1.Caption = Format(h & " :" & m & " :" & s, "Long Time")
Do
If Abbruch Then Exit Do
DoEvents
cmdStartTimer.Enabled = False
If h = 0 And m = 3 And s = 0 Then
MsgBox "15 minutes allowance are over. Please finish your work now.", vbOKOnly + vbSystemModal
End If
Loop Until s = 0 And m = 0 And h = 0
Label1.ForeColor = vbRed
'MsgBox (NameC1 & "abgelaufen")
Timer1.Enabled = False
'Call ExitWindowsEx(WIN_LOGOFF, &HFFFF)
frmLock.Visible = True
Unload Me
End Sub

Private Sub Label9_Click()

End Sub

Private Sub Timer1_Timer()
s = s - 1
If s < 0 And m > 0 Then
m = m - 1
s = 59
ElseIf m <= 0 And h > 0 And s < 0 Then
h = h - 1
m = 59
s = 59
End If
Label1.Caption = Format(h & " :" & m & " :" & s, "Long Time")
End Sub
 
Ich habe gerade gemerkt das ich was vergessen habe. Habe den Abruch zuerst auf true. nd dann weiter unten auf false gesetzt. Aber das funktioniert auch nicht.

Private Sub close_Click()
Abbruch = True
Unload Me

End Sub

Private Sub cmdStartTimer_Click()

Abbruch = False
 
Wahrscheinlich ist die Form frmLock oder es sind noch andere Forms geöffnet. Das konnte ich nicht testen.
Andere offene Forms müssen natürlich auch geschlossen werden, sonst bleiben sie im Speicher.
Die Form mit dem Countdown wird so einwandfrei beendet und bleibt nicht im Speicher.
 
Also hier ist die frmlock



Private Sub Command1_Click()
If Text1.Text = "edl2005" Then 'Passwort OK?
Timer1.Interval = 0
Timer1.Enabled = False
FormOnTop Me.hWnd, False
DestroyWindow Me.hWnd
Unload Me
End If
End Sub

Private Sub Form_Load()
Timer1.Interval = 1
Timer1.Enabled = True
Me.WindowState = vbMaximized
Me.Move 0, 0, Screen.Width, Screen.Height
FormOnTop Me.hWnd, True
End Sub




Private Sub Timer1_Timer()
'BringWindowToTop (Me.hWnd)
FormOnTop Me.hWnd, True
End Sub
 
Versuch´s mal so.
Dabei werden alle offene Forms entladen, vorausgesetzt sie hängen nicht in einer Schleife.
Code:
Private Sub close_Click()
Dim F As Form

Abbruch = True

For Each F In Forms
  Unload F
  Set F = Nothing
Next
  
End Sub
 
Zurück