1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. Yaerox

Beiträge von Yaerox

  • Speicher Leak?

    • Yaerox
    • 6. Dezember 2012 um 09:39

    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 ...

  • Speicher Leak?

    • Yaerox
    • 3. Dezember 2012 um 15:19

    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 ...

  • Speicher Leak?

    • Yaerox
    • 3. Dezember 2012 um 14:27

    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.

  • Speicher Leak?

    • Yaerox
    • 3. Dezember 2012 um 13:28

    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_aps

    Sieht 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.

    Dateien

    automatischeablaufsteuerung_b4_8.au3 128,68 kB – 282 Downloads
  • Speicher Leak?

    • Yaerox
    • 30. November 2012 um 10:47

    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...

  • fehlende Parmeter DllCall / _WinAPI - ReadProcessMemory

    • Yaerox
    • 30. November 2012 um 08:42

    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 :/

  • fehlende Parmeter DllCall / _WinAPI - ReadProcessMemory

    • Yaerox
    • 29. November 2012 um 16:00

    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 8|
    Bei:

    [autoit]

    ; retrieve memory infos of the current running process
    Local $mem = ProcessGetStats(4480)

    [/autoit][autoit][/autoit][autoit]

    For $i = 0 To UBound($mem) - 1
    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)

    [/autoit]

    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
    Local $ai_Handle = DllCall("kernel32.dll", 'int', 'ReadProcessMemory', "hwnd", $i_PID)
    If @error <> 0 Then
    MsgBox(0,"",@error)
    Exit 0
    EndIf

    [/autoit][autoit][/autoit][autoit]

    MsgBox(0,"",UBound($ai_Handle))
    For $i = 0 To UBound($ai_Handle) - 1
    ConsoleWrite($ai_Handle[$i] & @CR)
    Next

    [/autoit]

    raus, 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 -> Arbeitsspeicher

    Grüße

  • BugFix hat Geburtstag.

    • Yaerox
    • 29. November 2012 um 08:13

    Auch von mir alles Gute (nachträglich) zum geburtstag :)

  • winapi problem

    • Yaerox
    • 28. November 2012 um 12:48

    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.

  • TcpSend Rückgabewert

    • Yaerox
    • 28. November 2012 um 12:43
    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 ...

  • Windows 8 - Was meint ihr?

    • Yaerox
    • 28. November 2012 um 12:39

    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.

  • Fenster schließen verhindern

    • Yaerox
    • 28. November 2012 um 11:50

    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

  • AutoIt Programmierung - verschiedene Projekte

    • Yaerox
    • 28. November 2012 um 11:48
    Zitat von General Kaboom

    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.

    :rofl: Genau das gleiche wollte ich vorhin auch schon gepostet haben, nur hab ich Vorschau statt Absenden gedrückt fällt mir grad auf :D

  • Comboauswahl mit Funktionen verknüpfen ohne Erfolg - Anfänger

    • Yaerox
    • 28. November 2012 um 08:49

    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>
    #include <GUIConstantsEx.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $hGUI = GUICreate("GUI", 295, 200)
    $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)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $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
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _runCMD($hWorkingdir)
    ;~ 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()
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _exit()
    Exit
    EndFunc

    [/autoit]

    Grüße

  • Speicher Leak?

    • Yaerox
    • 28. November 2012 um 08:19

    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 :D

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

  • Warum gibt es hier keine Bots?

    • Yaerox
    • 26. November 2012 um 14:35

    Das alte Übel :D 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.

  • Stringregexp - Satz/CodeZeile suchen

    • Yaerox
    • 26. November 2012 um 12:36
    [autoit]

    Local $sData = InetRead("http://de.wikipedia.org/wiki/AutoIt")
    Local $nBytesRead = @extended

    [/autoit][autoit][/autoit][autoit]

    ConsoleWrite(BinaryToString($sData))
    MsgBox(0,"",StringRegExp(BinaryToString($sData), "<!DOCTYPE html>"))

    [/autoit]

    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.

  • Stringregexp - Satz/CodeZeile suchen

    • Yaerox
    • 26. November 2012 um 12:26

    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 ^^

  • Stringregexp - Satz/CodeZeile suchen

    • Yaerox
    • 26. November 2012 um 11:58

    Genau das tut InetRead doch ...

    [autoit]

    Local $sData = InetRead("http://de.wikipedia.org/wiki/AutoIt")
    Local $nBytesRead = @extended

    [/autoit][autoit][/autoit][autoit]

    ConsoleWrite(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 :P

  • Stringregexp - Satz/CodeZeile suchen

    • Yaerox
    • 26. November 2012 um 11:17

    Hab mit InetRead noch nie gearbeitet aber was mir aufgefallen ist:

    Zitat von Hilfe

    The 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 :P

    Mit einem anderen Bsp.: funktioniert es:

    Spoiler anzeigen
    [autoit]

    Local $sData = InetRead("http://de.wikipedia.org/wiki/AutoIt")
    Local $nBytesRead = @extended

    [/autoit] [autoit][/autoit] [autoit]

    MsgBox(0,"",StringRegExp(BinaryToString($sData), "AutoIt"))

    [/autoit]

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™