Fehlfunktionen beim Einsatz des AutoIt3 Wrappers Ver 1.9.3

  • Habe ein Script vom Juli 2007 nach kleinen Erweiterungen erneut compiliert.
    Seitdem liefert es falsche Ergebnisse, ohne vorher beim Compilieren Fehler auszugeben.

    Ich frage Windowsprozesse mit "$PID_P1 = ProcessExists("<Windows-Task>") ab, ob sie existieren. Plötzlich kriege ich nach erneuter Compilierung anstelle von z.B '$PID_P1 = 6523' das Ergebnis '$PID_P1 = 0'!

    Ich kann das alte und neue Programm parallel laufen und mir die PID-Nrn. anzeigen lassen: Das alte ist okay, das neue zeigt (bei den meisten Prozessen) den Wert "0", d.h. also "kein solcher Prozess aktiv" an.

    Kann mir jemand die Ursache erklären?

    //Editiert von Rasta:

    Offenbar kein ausschließliches Problem des Wrappers 1.9.3,
    sondern der letzten Versionen von AutoIt 3...

    weitere Infos siehe Beiträge 5 und 6...

    Einmal editiert, zuletzt von Rasta (30. Januar 2008 um 12:51)

  • hi,
    erklären kann man es Dir sicher. Aber ohne mehr Input dürfte es schwer werden. Poste deinen Code.

    Taucher

    :P Streite nie mit einem Idioten
    Erst zieht er dich auf sein Niveau herunter und schlägt dich dort mit seiner Erfahrung :D

  • Habe mein Ursprungsskript (ohne die beiden neuen PID-Abfragen) nochmal mit dem neuen Compiler compiliert -
    und bekomme auch das neuerliche Fehlverhalten!

    Ich habe dann ein Miniskript gebaut mit bloß 4 PID-Prozessabfragen -
    und das funktioniert ohne Schwierigkeiten!
    Dann ist die Ursache wohl eher nicht der "ProcessExists"-Befehl.

    ?(

    Also werde ich erst einmal genauer forschen, ob ich das Problem weiter einkreisen kann...

    Ich melde mich bestimmt wieder.

    Rasta

  • hi,

    also es gibt keine Fehlermeldung.
    aus der Hilfe

    Spoiler anzeigen

    If ProcessExists(3940) Then
    MsgBox(0, "Example", "Outlook is running.")
    EndIf


    Wenn du kein Script zeigst kann der Fehler auch nicht gefunden werden.
    Taucher

    :P Streite nie mit einem Idioten
    Erst zieht er dich auf sein Niveau herunter und schlägt dich dort mit seiner Erfahrung :D

  • Beim Aufarbeiten eines Code-Beispiels für diesen Post bin ich auf eine Fehlerursache gestoßen:

    Es fiel mir auf, dass nur Prozesse nicht erkannt werden, deren Dateinamen länger als 15 Zeichen (inkl. Extension) sind.
    In meinem Skript habe ich diverse davon im Einsatz!
    Vom FTP-Server holte ich mir ältere AutoIt-Versionen und testete sie sequenziell mit meinem ersten, noch funktionierenden Skript.
    Bis AutoIt-Version 3.2.4.9 funktionierte das Programm nach dem Compilieren noch, ab Version 3.2.6.0 nicht mehr!!
    In der History zu den umfangreichen Neuerungen dieser Version steht tatsächlich, dass für W2k das 15 Zeichen Problem gefixed wurde.

    Nachdem ich die Abfrage meiner Prozessnamen von z.T. auf 15 Zeichen abgeschnittenen Namen auf komplette Dateinamenangabe umgestellt hatte,
    lief das Skript auch wieder einwandfrei... :thumbup:

    Nun das große Staunen:
    Lass ich dieses Skript jetzt auf dem Server laufen, auf dem ich es auch tatsächlich benötige, habe ich den selben Effekt wie vorher -
    hier tut es wieder nicht!!! ?(

    Außerdem benutze ich ein weiteres Skript, das schaut, ob besagte (und im Skript definierte) Prozesse existieren, und wenn JA,
    diese dann gezielt löscht.
    Hier tritt das alte Phänomen auf, dass nur Prozesse mit Namen bis zu 15 Zeichen erkannt und dann auch gelöscht werden,
    nicht aber die (vielen) existierenden längeren Dateien...!?!

    Muss ja eigentlich die gleiche Ursache haben, trotzdem habe ich dieses unterschiedliche Verhalten:
    Zum einen bei zwei verschiedenen W2k-Servern,
    zum anderen gleiche Prozeduren mit unterschiedlicher Auswirkung.

    Wollte eben diesen Sachstand protokollieren.
    Ich forsche derweil weiter...

    Rasta

  • Forschen - Schreiben - Testen ergab folgende Infos zu den o.g. Befehlen:

    Mit Einsatz der z.Z. aktuellsten AutoIt Version V 3.2.10.0 scheinen die kuriosen Fehlerzustände (s. Beiträge oben) wieder in irgendeiner Form "begradigt" worden zu sein...

    Unter W2k funktioniert der Befehl ProcessExist() jetzt definitiv wieder nur mit der Namensangabe von max. 15 Zeichen Länge! D.h. ggf. müssen Prozessnamen vor der Abfrage gekürzt werden.
    ProcessList() liefert unter W2k ebenfalls nur Prozessnamen zurück mit max. 15 Zeichen Länge.
    Unterscheiden sich mehrere erst ab der 16. Stelle, erhält man quasi mehrere gleich lautende Namen als Ergebnis.

    Unter WinXP scheint aber die Langnamen-Variante zu funktionieren (konnte leider keine ausführlichen Tests machen).

    Sollte jemand weitere Hinweise zu dem Problem beisteuern können (W2k und WinXP), wäre ich ihm dankbar, wenn er es hier in diesem Post tun würde...!

    -Rasta-