LibNoDave-UDF zur Kommunikation mit Simatic SPS

  • hi moin.
    Nein weiteren Quellcode gibt´s nicht.
    Aber die 'LogAitDave_V3.0.exe' wird ja, wenn ich mich recht entsinne, von meinem Skript nur immer wieder neu ausgeführt. Und trotzdem schwillt der Speicherbedarf des AI-Skripts immer weiter an.

    ... wasweisichdennschon...

  • [autoit]

    Func _ReduceMemory($i_PID = -1)
    If $i_PID <> -1 Then
    Local $ai_Handle = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1f0fff, 'int', False, 'int', $i_PID)
    Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', $ai_Handle[0])
    DllCall('kernel32.dll', 'int', 'CloseHandle', 'int', $ai_Handle[0])
    Else
    Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', -1)
    EndIf
    Return $ai_Return[0]
    EndFunc;==> _ReduceMemory()

    [/autoit]


    Die Funktion dürfte dir helfen lasse sie einfach über adliberegist aufrufen sagen wir in 5-10min tackt

  • Hallo!
    Danke! Klappt leider nicht.
    Das unkompilierte Skript wird gekillt sobald die Funk aufgerufen wird.
    Das kompilierte gibt dann einen AutoIt-Error "Variable used without being declared". Kann ich aber nicht nachvollziehen..

    ... wasweisichdennschon...

  • Code
    Func _ReduceMemory($i_PID = @AutoItPID)
    If $i_PID <> -1 Then
    Local $ai_Handle = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1f0fff, 'int', False, 'int', $i_PID)
    Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', $ai_Handle[0])
    DllCall('kernel32.dll', 'int', 'CloseHandle', 'int', $ai_Handle[0])
    Else
    Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', -1)
    EndIf
    Return $ai_Return[0]
    EndFunc;==> _ReduceMemory()


    variable used without beeing declared...

    ... wasweisichdennschon...

  • und nu sollen wir die Variable suchen, die du nicht declared hast? -.- Gib doch wenigstens auch den Namen der Variable an...

    Zum Problem: Wie willst du $ai_Return zurückgeben, wenn du es local in den If-Anweisingen erstellst?

    Falls das da oben kein Formatierungsfehler vom Forum war: Einrücken hilft!!!