Protokoll einer Systemsitzung

  • Hallo, da ich des öfteren gerne in meinem System verschiedene Sachen verändere, möchte ich gerne Protokollieren, wann ich etwas bestätigt habe, oder wann ich etwas abgelehnt habe.
    Ich habe schon mal ein kleines Scipt angefangen. Allerdings funktioniert es noch nicht so richtig.
    Das Programm soll an das aktuell offenne Fenster die Tasten "y" und "n" senden, und diese Tastendrücke in einem Textdokument speichern.
    .

    [autoit]

    HotKeySet("y", "_y")
    HotKeySet("n", "_n")

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

    if $file = -1 Then
    MsgBox(0, "Fehler", "Die Datei konnte nicht geöffnet werden.")
    Exit
    EndIf

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

    While 1
    Sleep(100)
    WEnd

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

    Func _y()
    $file = FileOpen("YesNo.txt", 1)
    Send("y")
    FileWrite($file, "y")
    FileClose($file)
    EndFunc

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

    Func _n()
    $file = FileOpen("YesNo.txt", 1)
    Send("n")
    FileWrite($file, "n")
    FileClose($file)
    EndFunc

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


    .
    Natürlich sollen die Tasten "y/n" als Hotkeys benutzt werden.
    Das Problem besteht bei mir nun dadrinne, das das Programm entweder in einem Textdokument den Buchstaben speichert,
    oder ihn an das offene Fenster sendet. Manchmal macht er sogar garnichts :S
    ich möchte natürlich beides, senden und speichern, und hoffe auf eure Tipps.

    Einmal editiert, zuletzt von MasterOfTime (25. Januar 2010 um 13:12)

  • Also erstmal würd ich FileOpen/FileClose löschen, die sind überflüssig, bzw fangen das dann ab und dann könntest du noch einbauen, dass er das aktuelle Fenster noch mit einträgt, sonst bringt es ja nicht viel zu wissen, das etwas bestätigt wurde aber nicht zu wissen was
    EDIT: Sicher das das Fenster auf "y" und "n" reagiert und du nicht mit z.B. TAB und ENTER bestätigt werden muss?

  • Mit Tab und Enter muss ich nicht so oft bestätigen.
    Wie FileOpen/FileClose löschen? xD
    Denn weiß der doch nicht, wo der das rein machen soll, oder?
    Und der Fenstername verändert sich ständig, was bestätigt werden soll, kann man auch nicht auslesen. (Habe es schon getestet :D )

  • problem ist nur das du da quasi ne schleife gebaut hast.

    [autoit]

    Func _y()
    $file = FileOpen("YesNo.txt", 1)
    Send("y") ; da y mit einem hotkey belegt ist springt er zum anfang der funktion _y (und das immer und immer wieder)
    FileWrite($file, "y")
    FileClose($file)
    EndFunc

    [/autoit]


    so würds funktionieren:

    Spoiler anzeigen
    [autoit]

    HotKeySet("y", "_y")
    HotKeySet("n", "_n")

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

    While 1
    Sleep(100)
    WEnd

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

    Func _y()
    HotKeySet("y")
    Send("y")
    $file = FileOpen("YesNo.txt", 1)
    FileWrite($file, "y")
    FileClose($file)
    HotKeySet("y", "_y")
    EndFunc

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

    Func _n()
    HotKeySet("n")
    Send("n")
    $file = FileOpen("YesNo.txt", 1)
    FileWrite("YesNo.txt", "n")
    FileClose($file)
    HotKeySet("n", "_n")
    EndFunc

    [/autoit]
  • Hmm, mit Y und N als Buchstaben scheint das nicht zu klappen, du musst wahrscheinlich irgendwas anderes (SCII?) eintragen damits läuft. Mit Sondertasten geht es nämlich super. Das mit dem Fenster wurde wohl geändert... auf jedenfall kommt bei Winactive nicht mehr der Name sondern das Handle raus (oder ich hatte das damals anders gelöst, falls ich das Script noch wiederfinde schau ich mal nach).
    Hier ist deins noch mal ein wenig umgebaut:

    Spoiler anzeigen
    [autoit]

    HotKeySet("{F5}", "_y")
    HotKeySet("{F6}", "_n")
    While 1
    $Window = WinGetTitle("")
    Sleep(100)
    WEnd

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

    Func _y()
    Send("y")
    FileWrite(@ScriptDir & "\JaNein.txt", "y @ "&$Window&@CRLF)
    EndFunc
    Func _n()
    Send("n")
    FileWrite(@ScriptDir & "\JaNein.txt", "n @ "&$Window&@CRLF)
    EndFunc

    [/autoit]


    EDIT: Habs wiedergefunden und das script geupdatet
    EDIT2:
    Sieht dann so aus:

    Spoiler anzeigen

    y @ Hilfe.txt - Editor
    n @ Neu Textdokument.txt - Editor
    y @ JaNein.txt - Editor
    n @ JaNein.txt - Editor

    3 Mal editiert, zuletzt von Aquaplant (21. Januar 2010 um 23:23)

  • Hmm, mit Y und N als Buchstaben scheint das nicht zu klappen


    siehe mein post.
    das is ne endlosschleife

    warum lässt du $Window = WinGetTitle("") in der schleife abfragen. tus halt einfach in die funktion.
    zu jedem anderen zeitpunkt wirds ja nicht gebraucht


    so würds ich bevorzugen. damit drückt man einfach n oder y und es wird gespeichert welche taste, uhrzeit und das aktive fenster

    Spoiler anzeigen
    [autoit]


    HotKeySet("y", "_y")
    HotKeySet("n", "_n")

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

    While 1
    Sleep(100)
    WEnd

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

    Func _y()
    HotKeySet("y")
    $win = WinGetTitle("[Active]")
    Send("y")
    $file = FileOpen("YesNo.txt", 1)
    FileWrite($file, "Y " & @Tab & @Hour & ":" & @Min & @Tab & $win & @CRLF)
    FileClose($file)
    HotKeySet("y", "_y")
    EndFunc

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

    Func _n()
    HotKeySet("n")
    $win = WinGetTitle("[Active]")
    Send("n")
    $file = FileOpen("YesNo.txt", 1)
    FileWrite($file, "N " & @Tab & @Hour & ":" & @Min & @Tab & $win & @CRLF)
    FileClose($file)
    HotKeySet("n", "_n")
    EndFunc

    [/autoit]