Wenn ich in der Funktion _starte_ablauf() das lade_aktive_aps mal testweise auskommentieren geht der speicher nachdem etwas abgelaufen ist auch kaum zurück ... auch irgendwie kurios ...
Beiträge von Yaerox
-
-
Habe die Zeilen Code von dir in die Funktion lade_aktive_aps() am ende hinzugefügt:
Das krasse geschwanke am Ende ist weil ich dort noch anderes gemcht habe ... erstmal net ganz so relevant...
[Blockierte Grafik: http://s14.directupload.net/images/121203/l6245tjo.png]
dann hab ich kurz gepennt und hab einen Screenshot vergessen, aber nachdem er sich eingependelt hatte und einfach nur normal lief war es dann so:
[Blockierte Grafik: http://s14.directupload.net/images/121203/l6245tjo.png]Hier ist quasi immernoch von vorher ein kleiner anstieg vom Wert 16.535.552 auf 16.543.744 ... scheinbar wird mehr Speicher als vorher freigegeben, zwar noch nicht alles aber definitiv besser ... jetzt läuft er auf dauer auch auf 16.543.744 geht dann wenn etwas verarbeitet wird hoch und danach wieder auf 16.543.744 runter ...
#Edit: [Blockierte Grafik: http://s1.directupload.net/images/121203/zaeiquw7.png]
Zwischendurch gibt es aber immer mal einen Ablauf bei dem es nicht komplett oder fast komplett zurück geht, sondern nur ein wenig und somit bin ich mittlerweile statt bei 16.850.000 bei 17.000.000 ...
-
Immer? Weil die Funktion: lade_Aktive_aps() wird mehrmals aufgerufen während des ablaufs...
#Edit: Habe das mal in die Ablaufschleife implementiert, ich lass das mal kurz ein paar Durchläufe machen, aber es scheint jetzt schon viel schneller zurück zu gehen (der Speicher) ... normal steigt es an und bleibt rel. weit oben, aber das sieht schonmal viel besser aus ... poste gleich genaueres Feedback.
-
Hallöchen nochmals, ich hoffe irgendwer schaut nochmals hier rein und kann mir vielleicht zur Hand gehen

Hier mal zur verdeutlichung dass der private Speicher leider noch springt: [Blockierte Grafik: http://s7.directupload.net/images/121203/eqefzfgm.png]
Ich habe versucht das Problem einzukreisen, aber irgendwie bin ich momentan nicht mehr wirklich erfolgreich...kleine Erklärung:
Leerlauf = Prog ist gestartet, der Ablauf ist aber Inaktiv. Es sollte nichts bis auf die Hauptschleife laufen denke ich... KONSTANT
Leerlauf mit geladenen Arbeitsplänen = Prog ist gestartet, der Ablauf ist aber Inaktiv, Arbeitspläne wurden geladen. Funktionen (wie oben) nur dass 1x die Funktion lade_aktive_aps aufgerufen wurde.
Leerlauf_Start = Prog gestartet, Ablauf aktiv jedoch in der zeit in der nichts abgearbeitet wird. Funktionen: pruefe_ablauf, vergleiche_zeitstempel
Ablauf = Prog gestartet, Ablauf aktiv und es laufen Arbeitspläne ab. Funktionen: pruefe_ablauf, vergleiche_zeitstempel, starte_ablauf, _schreibe_log, lade_aktive_apsSieht jemand von euch vielleicht im Code noch einen Fehler der den privaten Speicher steigen lässt?
Ich suche und suche und suche nur finde nichts 
Grüße
PS: Es werden Batch dateien bei den Abläufen gestartet, die .txt dateien erstellen, verschieben etc.
-
Also, habe nun einiges umgeschrieben und habe jetzt scheinpar ausschließlich ein Problem mit dem Privaten Speicher.
Aufgefallen ist, im Leerlauf passiert nichts, nur sobald er 1x etwas gestaret hat geht er hoch, nur danach nicht wieder komplett runter....sprich er erhöht sich um ca. 1 mb geht danach vll 200kb runter ... ich werd den code jetzt nochmal abgrasen...
-
Da ich jetzt mitbekommen habe, dass oft bei diesem Thema auf Bots geschaut wird, mein Script (Ablaufsteuerung) ist ja im Forum
Möchte nochmal darauf hinweisen, dass ich dies dafür sicherlich nutzen werde, zumal ich selbst leidenschaftlicher Gamer bin und eine Abneigung ggn Bots verspüre 
Nun hoffe ich nurnoch dass mir jemand helfen kann

-
Hallo zusammen,
ich habe mich letztens mal hinter DllCalls geklemmt und wollte versuchen zu verstehen was es damit auf sich hat. Ich denke das ist mir klar geworden, aber ich habe leider gar keine Ahnung woher immer alle wissen was in den jeweiligen .dll's für Funktionen enthalten sind. Mittlerweile schaue ich bei MSDN immer via Stichwortsuche ... RAM eines Prozesses auslesen -> ReadProcessMemory nur komme ich dort zu meinem zweiten Problem. Ich möchte ein Script schreiben, mit dem ich einen Prozess überwache und alle 60 Sekunden den Ram auslese und die Infos in eine Datei schreiben lasse ... mein Problem:
wo kriege ich bei einem
[autoit]_WinAPI_ReadProcessMemory($hProcess, $pBaseAddress, $pBuffer, $iSize, ByRef $iRead)
[/autoit]die restlichen Informationen her? $hProcess könnt ich mir die ProzessID vorstellen aber der Rest
[autoit]
Bei:; retrieve memory infos of the current running process
[/autoit][autoit][/autoit][autoit]
Local $mem = ProcessGetStats(4480)For $i = 0 To UBound($mem) - 1
[/autoit]
ConsoleWrite($mem[$i] & @CR)
Next
; retrieve IO infos of the current running process
Local $IO = ProcessGetStats(4480, 1)
ConsoleWrite(@CR)
For $i = 0 To UBound($IO) - 1
ConsoleWrite($IO[$i] & @CR)
Next)kriege ich jetzt zwar etwas rausgeschrieben aber leider net den erwünschten Arbeitsspeicherverbrauch (Seitenfehler, Zugesichert, Arbeitssatz, Freigabe Möglich, Privat). Angeblich kriege ich das via:
[autoit]Local $i_PID = 4480
[/autoit][autoit][/autoit][autoit]
Local $ai_Handle = DllCall("kernel32.dll", 'int', 'ReadProcessMemory', "hwnd", $i_PID)
If @error <> 0 Then
MsgBox(0,"",@error)
Exit 0
EndIfMsgBox(0,"",UBound($ai_Handle))
[/autoit]
For $i = 0 To UBound($ai_Handle) - 1
ConsoleWrite($ai_Handle[$i] & @CR)
Nextraus, nur dort stürzt mein AutoIt jedesmal ab

Könnte mir fix jemand helfen? Möchte mein momentanes Projekt damit überwachen lassen da ich glaube einige Speicherleaks gefunden zu haben

Für die die nicht wissen welche Infos ich meine: Task-Manager -> Lesitungen -> Ressourcenmonitor -> ArbeitsspeicherGrüße
-
Auch von mir alles Gute (nachträglich) zum geburtstag

-
Würde sagen entweder ist dein Aufruf der Fkt. fehlerhaft oder wie m-obi meinte schon deklariert ... u.U. könntest ja mal den Code posten.
-
Zitat
Return Value
Success: Returns number of bytes sent to the connected socket.
Failure: Returns 0 and set @error.
@error: windows API WSAGetError return value (see MSDN).sent to the connected socket ... ich würde m-obi recht geben ...
-
Nein, weil wie schon erwähnt ist im Hinblick auf die Vergangenheit jedes zweite Windows schrott. Ich habe es selber noch nicht installiert obwohl es hier rumliegt, aber ich will es eig auch garnicht

Alleine was man über Sicherheitslücken etc. teilweise auch bei Heise ließt ist für mich Grund genug es einstauben zu lassen.
-
Ich kann dir keine direkte Lösung geben, was ich mir vorstellen könnte wären die HotKeys des Scripts vielleicht anders zu belegen ...
Grüße
-
Hallo Frank
Dein Angebot klingt interessant, aber vieleicht wäre es noch möglich ein bisschen mehr Infos zu den Programmen zu geben:
Was sind das für Programme? Was für Erweiterungen stellst du dir dazu vor?
Ich frage das jetzt nicht für mich -für bezahlte Projekte arbeite ich zu langsam und bin einfach noch zu wenig erfahren in AutoIt [...] aber ich denke, das wäre für die Interessenten noch praktisch zu wissen, ist schliesslich auch besser für dich, wenn du das nicht jedem Interessenten einzeln erklären müsstest.
Genau das gleiche wollte ich vorhin auch schon gepostet haben, nur hab ich Vorschau statt Absenden gedrückt fällt mir grad auf 
-
Bei mir funktioniert es ... ich weiss ja nicht welchen Befehl du ausführen magst, den musst halt noch eintragen/auskommentieren.
Außerdem war ich so frei und hab mir den Code ein wenig umgestellt von den Handels und der Anordnung. Kleiner Tipp, schreibe deine GUIs lieber von Hand

Spoiler anzeigen
[autoit]#include <ComboConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>$hGUI = GUICreate("GUI", 295, 200)
[/autoit] [autoit][/autoit] [autoit]
$hLabel1 = GUICtrlCreateLabel("Auswahl 1 oder Auswahl 2", 5, 5, 125, 20)
$hCombo1 = GUICtrlCreateCombo("", 5, 30, 137, 25, $CBS_DROPDOWNLIST)
GUICtrlSetData(-1, "Auswahl 1|Auswahl 2")
$hLabel2 = GUICtrlCreateLabel("Produktart", 150, 5, 53, 20)
$hCombo2 = GUICtrlCreateCombo("", 150, 30, 137, 25, $CBS_DROPDOWNLIST)
GUICtrlSetData(-1, "1|2|3")
$hLabel3 = GUICtrlCreateLabel("Eingabefeld für Auswahl 1", 5, 60, 130, 20)
$hInput1 = GUICtrlCreateInput("", 5, 85, 280, 20)
$hLabel4 = GUICtrlCreateLabel("Eingabefeld für Auswahl 2", 5, 110, 130, 20)
$hInput2 = GUICtrlCreateInput("", 5, 135, 280, 20)
$gGoButton = GUICtrlCreateButton("GO", 5, 160, 80, 25)GUISetState(@SW_SHOW)
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
_exit()
Case $gGoButton
If GUICTRLRead($hCombo1) = "Auswahl 1" Then
_runCMD(@TempDir) ;Ich glaube "C:\tmp" ist so nicht korrekt ...
;schonmal @TempDir angeschaut?
ElseIf GUICTRLRead($hCombo1) = "Auswahl 2" Then
_runCMD("C:\")
EndIf
EndSwitch
WEndFunc _runCMD($hWorkingdir)
[/autoit] [autoit][/autoit] [autoit]
;~ Run (@ComSpec & " /c " & 'dir' , $hWorkingdir) ;Wenn du direkt über die CMD etwas ausführen willst.
Run ("cmd.exe" , $hWorkingdir) ;Wenn du die CMD nur öffnen willst.
_exit()
EndFuncFunc _exit()
[/autoit]
Exit
EndFuncGrüße
-
Heyy, das mit dem _SQLite_QueryFinalize hab ich sofort ausprobiert nachdem im englischen Forum ich darauf hingewiesen worden bin. Es scheint sich extrem verbessert zu haben...
Zu Beginn Zugesicherter Speicher: 15MB, nach 2 Tagen war er auf 2 GB. Nun habe ich diese QueryFinalize noch nicht überall eingebaut aber schon jetzt ist er nach einem Tag auf 18MB und scheint dort aber auch zu bleiben. Ich werde das restliche Script nun bearbeiten.
Zu deiner Funktion _sqlitequerycheck, ja, ich hab damals sowas gesucht, wusste aber nicht wie eine Parameterübergabe bei Funktionen geht. Wenn ich mir den Text allg. anschaue, ich würde dies jetzt ganz anders machen

Soweit schonmal danke, ich meld mich sobald ich neue Erkentnisse habe

-
Das alte Übel
Bots müssen nicht unbedingt schlecht sein, aber sie werden leider zu oft mit falschen Hintergedanken benutzt ...Im Bezug auf den 'Ruf' des Forums ist es eine weise Entscheidung finde ich, wer sowas machen möchte muss sich diese Infos dann aus anderen Foren holen.
-
[autoit]
Local $sData = InetRead("http://de.wikipedia.org/wiki/AutoIt")
[/autoit][autoit][/autoit][autoit]
Local $nBytesRead = @extendedConsoleWrite(BinaryToString($sData))
[/autoit]
MsgBox(0,"",StringRegExp(BinaryToString($sData), "<!DOCTYPE html>"))MsgBox gibt mir eine 1 zurück, sprich match.
Bei mir sucht er den Code ab ... und in der Hilfe ist der StringRegExp Befehl ja erklärt.
String zum durchsuchen, String nach dem gesucht werden soll, optionale Einstellungen.
-
Das mit der Console war lediglich ein Test um dir zu zeigen dass der Befehl auch wirklich den HTML-Code einer Seite ausliest. Du nimmst an der Stelle halt ganz normal den StringRegExp Befehl oder halt StringInStr wobei ich ersteres immer nutze

-
Genau das tut InetRead doch ...
[autoit]Local $sData = InetRead("http://de.wikipedia.org/wiki/AutoIt")
[/autoit][autoit][/autoit][autoit]
Local $nBytesRead = @extendedConsoleWrite(BinaryToString($sData))
[/autoit]
Wenn du das so startest siehst du in der SciteConsole den HTML Code. Wenn du dieses Beispiel dann mit deinem GoogleLink machst siehst du nix, weil er diesen Link net auslesen kann...Falls ich total falsch liege bitte ich darum mich zu verbessern, aber grad würd ich echt sagen diese Google-Suchergebniss-Links funzen damit net

-
Hab mit InetRead noch nie gearbeitet aber was mir aufgefallen ist:
Zitat von HilfeThe URL parameter should be in the form "http://www.somesite.com/path/file.html" - just like an address you would type into your web browser.
Deine GoogleAdresse dort ist zumindest bei mir nicht in dieser Form

Mit einem anderen Bsp.: funktioniert es:
Spoiler anzeigen
[autoit]Local $sData = InetRead("http://de.wikipedia.org/wiki/AutoIt")
[/autoit] [autoit][/autoit] [autoit]
Local $nBytesRead = @extendedMsgBox(0,"",StringRegExp(BinaryToString($sData), "AutoIt"))
[/autoit]