Hey Leute,
Ich habe ein Script geschrieben das eine .Exe finden soll und dann warten soll bis diese geschlossen wurde.
Um dann am ende eine bestimmte Funktion auszuführen.
Meine erste Programm Version hatte keine GUI war daher einfach zu programmieren:
Also "processwait" dann mit einer While-Schleife abfragen ob dieser "ProcessExists",
wenn dieser nicht mehr da ist, soll eine bestimmte Funktion ausgeführt werden und dann das Programm beenden.
Habe ich geschafft und war auch easy.
Zu diesen Zeitpunkt hat das Programm schon 2-5% CPU gefressen.(Laut TaskManager)
Mein PC ist nicht der Beste. Intel i5 3550 4x3,3 TurboModus 3,8
Jetzt in meiner neuen Version wollte ich eine GUI mit einbauen.
Damit das Programm eine Art 'Log' anzeigt und der User auch weiß was gerade passiert.
Vor allem war mir wichtig das wenn man auf den X-Button klickt sich auch das Programm beendet.
Irgendwie & auch ziemlich verwirrend habe ich es geschafft.
Aber jetzt frisst das Programm bis zu 11% CPU. Das finde ich schon heftig da das Script gerade mal 80 Zeilen hat.(Als Exe fertig kompiliert.)
Kann man mein Script optimieren?
Habt ihr Vorschläge?
MFG
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$desktopx=@DesktopWidth
$desktopy=@DesktopHeight
$p=0
$label1=0
$label2=0
$label3=0
$nl=0
$pp=0
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("SAVER", 301, 75, $desktopx-301, $desktopy-70-75)
$Label1 = GUICtrlCreateLabel("Warte auf start von 'TEST.exe'", 40, 24, 212, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFF0000)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
;MsgBox(0,"Test", @DesktopWidth & "x" & @DesktopHeight)
Func _FuncWaitEXE()
If ProcessExists("TEST.exe") Then
$p=1
Else
EndIf
EndFunc
Func _FuncFindEXE()
If $p = 1 Then
If $nl = 0 Then
GUICtrlDelete($Label1)
$Label2 = GUICtrlCreateLabel("'TEST.exe' wurde gefunden", 56, 8, 192, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0x008000)
$Label3 = GUICtrlCreateLabel("Warte auf das Schließen der EXE!", 24, 40, 260, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0x008000)
$nl = 1
Else
_FuncWaitCloseEXE()
EndIf
Else
EndIf
EndFunc
Func _FuncWaitCloseEXE()
If ProcessExists("TEST.exe") Then
Else
_FuncAusgabe()
EndIf
EndFunc
Func _FuncAusgabe()
MsgBox(0,"SAVER","Programm wurde geschlossen!")
Exit
EndFunc
Func _FuncExit()
$Exit_Q = MsgBox ( 48+4, "SAVER", "Willst du den Saver wirklich beenden?" & @CRLF & "Wenn du das Programm beendest, wird nichts Automatisch gespeichert!")
If $Exit_Q = 6 Then ; JA = SAVE
Exit
EndIf
EndFunc
While 1
$nMsg = GUIGetMsg()
_FuncWaitEXE()
_FuncFindEXE()
Switch $nMsg
Case $GUI_EVENT_CLOSE
_FuncExit()
EndSwitch
WEnd
Alles anzeigen