hi leute...
ich habe mir eine art "background" programm geschrieben was die ganze zeit im hintergrund läuft und von mir ständig erweitert wird...das programm besteht im groben aus einer schleife die alle 2.5 sekunden durch läuft so weit so gut zum programm
nun zum "problem"...das programm benötigt am anfang gerade mal 3.056 kilobytes vom arbeitsspeicher..das ist ja recht wenig, da ich ja auch die priorität auf niedrig gesetzt habe allerdings steigt der speicherverbrauch nach ein paar stunden auf 24.012 kilobytes und mehr an
das ist ja immer noch nicht viel, allerdings würde ich gerne wissen woran das liegt das der speicherverbrauch immer weiter annimmt
weiß jemand woran das vielleicht liegen könnte?
hier mal mein script
Spoiler anzeigen
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=Background.ico
#AutoIt3Wrapper_Outfile=Z:\BackUps\AutoIt - Scripts\##Fertig\Background\Background.exe
#AutoIt3Wrapper_Outfile_x64=Background.exe
#AutoIt3Wrapper_Res_Language=1031
#AutoIt3Wrapper_Res_requestedExecutionLevel=asInvoker
#AutoIt3Wrapper_Tidy_Stop_OnError=n
#AutoIt3Wrapper_Res_FileVersion=1.12.33.0
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
; =====================================================================
; Variablen defnieren
; =====================================================================
Global Const $s_autorun_keyname = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run"
Global Const $s_valuename = "Background"
Global Const $s_path = @ScriptDir & "\Background.exe"
Global Const $s_ini_path = @ScriptDir & "\Background.ini"
Global $a_tray_menue[6] = ["WinTimeKill öffnen", "PC reinigen", "", "Über...", "", "Beenden"]
Global $a_tray_onevent[6] = ["_OpenWinTimeKill", "_CleanPC", "_Default", "_About", "", "_Terminate"]
; =====================================================================
; Vorbereitung
; =====================================================================
Sleep(1000)
If Not IsAdmin() Then
Exit
EndIf
Opt("WinTitleMatchMode", 2)
Opt("TrayOnEventMode", 1)
Opt("TrayMenuMode", 3)
Sleep(5000)
[/autoit] [autoit][/autoit] [autoit]$a_path = _FileGetType()
[/autoit] [autoit][/autoit] [autoit]If $a_path[1] = "exe" Then
ProcessSetPriority($a_path[0] & "." & $a_path[1], 0)
RegRead($s_autorun_keyname, $s_valuename)
If @error Then RegWrite($s_autorun_keyname, $s_valuename, "REG_SZ", $s_path)
EndIf
Sleep(5000)
[/autoit] [autoit][/autoit] [autoit]_DriveInkOnDesktopStartUp()
; =====================================================================
; =====================================================================
; Hauptprogramm
; =====================================================================
; =====================================================================
If @WDAY == 6 Then
MsgBox(64, "Spartacus - Info", "Eine neue Folge von 'Spartacus' erscheint heute!" & @CRLF & "Der Link befindet sich im Zwischenspeicher!", 5)
ClipPut("http://www.myvideo.de/channel/spartacus")
EndIf
For $i = 0 To UBound($a_tray_menue, 1) - 1
$a_tray_menue[$i] = TrayCreateItem($a_tray_menue[$i])
TrayItemSetOnEvent($a_tray_menue[$i], $a_tray_onevent[$i])
Next
While Sleep(2500)
_CreateDriveInkOnDesktop()
If _GetCPUUsed() > 45 Then
Do
Sleep(10000)
Until _GetCPUUsed() < 35
EndIf
Select
Case ProcessExists("farcry2.exe")
ProcessWaitClose("farcry2.exe")
Sleep(2000)
DirCopy("C:\Users\RedHead\Documents\My Games\Far Cry 2", "Z:\BackUps\Spielstände\My Games\Far Cry 2", 1)
MsgBox(64, "FarCry 2 - Info", "Fertig kopiert!", 3)
Case WinExists("Fehlerhafter oder fehlender AVI-Index")
WinActivate("Fehlerhafter oder fehlender AVI-Index")
For $x = 0 To 5 Step 1
MouseClick("left", Random(770, 790, 1), Random(490, 500, 1))
Sleep(500)
Next
Sleep(5000)
If WinExists("Repariere AVI-Index...") Then
WinKill("Repariere AVI-Index...")
Sleep(400)
WinActivate("VLC")
Sleep(400)
Send("{n}")
EndIf
Case ProcessExists("BattlefrontII.exe")
ProcessWaitClose("BattlefrontII.exe")
If MsgBox(64 + 4, "BattelfrontII - Info", "Ein BackUp der Spielstände anlegen?") = 6 Then
DirCopy("C:\Spiele\BFII\GameData\SaveGames", "Z:\BackUps\Spielstände\AutoIt-Background\BattelfrontII", 1)
DirCopy("C:\Spiele\BFII\GameData\SaveGames", "Z:\Startkid\Star Wars Battelfront 2\SaveGames", 1)
MsgBox(64, "BattelfrontII - Info", "Fertig kopiert!", 3)
EndIf
Case WinExists("Facebook - anmelden")
If MsgBox(4 + 262144 + 32, "Facebook - Info", "Anmelden?") = 6 Then
;die stellen hier habe ich natürlich entfernt
Else
Sleep(10000)
EndIf
EndSelect
WEnd
Func _About()
Return MsgBox(64, "Über...", "Autor:" & @TAB & "RedHead!" & @CRLF & "Version:" & @TAB & FileGetVersion(@ScriptFullPath))
EndFunc
Func _OpenWinTimeKill()
ShellExecute(@ScriptDir & "\WinTimeKill.exe")
If @error Then MsgBox(48, "Error", "WinTimeKill.exe konnte nicht gestartet werden!" & @CRLF & _
"Wahrscheinlich befindet sich die Datei nicht mir am angegebenen Ort" & @CRLF & _
"oder wurde gelöscht!")
EndFunc
Func _CleanPC()
Local $s_PathAuslogicsRegistryCleaner = "C:\Utils\Auslogics Registry Cleaner\RegCleaner.exe"
Local $s_PathCCleaner = "C:\Utils\CCleaner\CCleaner64.exe"
If ProcessExists("firefox.exe") Then Return MsgBox(16, "Achtung!", "Firefox muss geschlossen sein!")
ShellExecute($s_PathCCleaner)
If Not @error Then
WinWait("Piriform CCleaner")
$s_title = WinGetTitle("Piriform CCleaner")
Sleep(200)
ControlClick($s_title, "", "Button1")
Do
Sleep(1000)
Until ControlCommand($s_title, "", "Button3", "IsEnabled", "")
Sleep(500)
ControlClick($s_title, "", "Button3")
Sleep(500)
Do
Sleep(1000)
Until ControlCommand($s_title, "", "Button3", "IsEnabled", "")
Sleep(500)
ControlClick($s_title, "", "Button5")
Sleep(500)
ControlClick($s_title, "", "Button2")
Sleep(500)
;~ Do
;~ Sleep(1000)
;~ Until ControlCommand($s_title, "", "Button3", "IsEnabled", "")
;~ Sleep(15000)
;~ Sleep(500)
;~ ControlClick($s_title, "", "Button3")
;~ Sleep(500)
;~ WinWait("CCleaner")
;~ ControlClick("CCleaner", "", "Button1")
;~ Sleep(500)
;~ WinWait("Speichern unter")
;~ Sleep(500)
;~ ControlClick("Speichern unter", "", "Button1")
Do
Sleep(1000)
MsgBox(64, "INFO", "Bitte 'CCleaner' schließen!", 5)
Until Not ProcessExists("CCleaner64.exe")
Else
MsgBox(16, "ERROR!", "'CCleaner' befindet sich nicht am angegebenen Pfad!")
EndIf
ShellExecute($s_PathAuslogicsRegistryCleaner)
If Not @error Then
WinWait("Auslogics Registry Cleaner")
$s_title = WinGetTitle("Auslogics Registry Cleaner")
ControlClick($s_title, "", "TAxDropDownButton201")
Do
Sleep(100)
Until ControlCommand($s_title, "", "TButton1", "IsVisible")
ControlClick($s_title, "", "TButton1")
Sleep(500)
ProcessClose("RegCleaner.exe")
Else
MsgBox(16, "ERROR!", "'RegistryCleaner' befindet sich nicht am angegebenen Pfad!")
EndIf
EndFunc
[/autoit] [autoit][/autoit] [autoit]Func _Default()
Return 0
EndFunc
Func _Terminate()
Exit
EndFunc
Func _FileGetType($s_path = @ScriptFullPath)
Local $a_file[2]
If StringRegExp(StringLeft($s_path, 1), "[a-zA-Z]") And StringMid($s_path, 2, 1) == ":" Then
$a_path = StringSplit($s_path, "\")
$a_path = StringSplit($a_path[$a_path[0]], ".")
$a_file[0] = $a_path[1]
$a_file[1] = $a_path[2]
Return $a_file
Else
Return SetError(-1)
EndIf
EndFunc
Func _DriveInkOnDesktopStartUp()
Local $a_drive = DriveGetDrive("ALL")
Local $a_driveondesktop = _GetDriveInkOnDesktop()
Local $f_notfound = True, $s_drivelabel = ""
If $a_drive[0] <> $a_driveondesktop[0] Then
For $i = 1 To $a_drive[0]
$a_drive[$i] = StringUpper(StringLeft($a_drive[$i], 1)) & ":"
$f_notfound = True
For $x = 1 To $a_driveondesktop[0]
If StringLeft($a_drive[$i], 1) = StringMid($a_driveondesktop[$x], 2, 1) Then $f_notfound = False
Next
If $f_notfound Then
$s_drivelabel = DriveGetLabel($a_drive[$i])
If @error Then $s_drivelabel = "UNKNOWN"
FileCreateShortcut($a_drive[$i] & "\", @DesktopDir & "\(" & StringLeft($a_drive[$i], 1) & ") - " & $s_drivelabel)
EndIf
Next
EndIf
EndFunc
Func _CreateDriveInkOnDesktop()
Local $a_drive = DriveGetDrive("ALL")
Local $a_driveondesktop = _GetDriveInkOnDesktop()
Local $f_notfound = True, $s_drivelabel = "", $f_delete = True, $f_nichtidentisch = True
If $a_drive[0] <> $a_driveondesktop[0] Then
For $i = 1 To $a_drive[0]
$a_drive[$i] = StringUpper(StringLeft($a_drive[$i], 1)) & ":"
$f_notfound = True
For $x = 1 To $a_driveondesktop[0]
If StringLeft($a_drive[$i], 1) = StringMid($a_driveondesktop[$x], 2, 1) Then $f_notfound = False
Next
If $f_notfound Then
$s_drivelabel = DriveGetLabel($a_drive[$i])
If @error Then $s_drivelabel = "UNKNOWN"
FileCreateShortcut($a_drive[$i] & "\", @DesktopDir & "\(" & StringLeft($a_drive[$i], 1) & ") - " & $s_drivelabel)
EndIf
Next
For $i = 1 To $a_driveondesktop[0]
$f_delete = True
For $x = 1 To $a_drive[0]
If StringMid($a_driveondesktop[$i], 2, 1) = StringLeft($a_drive[$x], 1) Then $f_delete = False
Next
If $f_delete Then FileDelete(@DesktopDir & "\" & $a_driveondesktop[$i])
Next
EndIf
EndFunc
Func _GetDriveInkOnDesktop()
Local $h_search = FileFindFirstFile(@DesktopDir & "\*")
Local $s_inkfiles = "", $a_array[1] = [0]
While 1
$s_file = FileFindNextFile($h_search)
If @error Then ExitLoop
If StringLeft($s_file, 1) = "(" And StringRegExp(StringMid($s_file, 2, 1), "[a-zA-Z]") And StringMid($s_file, 3, 1) = ")" Then $s_inkfiles &= $s_file & "|"
WEnd
If $s_inkfiles = "" Then
Return $a_array
Else
Return StringSplit(StringTrimRight($s_inkfiles, 1), "|")
EndIf
EndFunc
Func _GetCPUUsed()
Local $wbemFlags = 0x10 + 0x20
Local $strComputer = @ComputerName
Local $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
Local $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Processor", "WQL", $wbemFlags)
Local $c = 0
Local $sMsg = ""
For $objItem In $colItems
$sMsg &= "cpu%" & $objItem.LoadPercentage
Next
$CpuAuslastung = StringSplit($sMsg, "cpu%", 1)
[/autoit] [autoit][/autoit] [autoit]For $n = "0" To $CpuAuslastung[0]
$c += $CpuAuslastung[$n]
Next
Return (Round($c / $CpuAuslastung[0], 0))
EndFunc