Finde den Fehler

  • Das folgene Script soll jede halbe Minute in eine Datei schreiben, welches Programm im Vordergrund ist.
    Eigentlich soll die Nummer hinter dem Fensternamen um 1 erhöht werden, aber stattessen wird der wieder neu aufgeschrieben. Ich hab leider nicht herausgefunden wieso. ;( Kann mir jemand helfen?

    [autoit]

    #Include <Date.au3>
    $Path=@TempDir&"\WP_Prog.txt"
    $Date="2010/01/30 11:00:00"
    While 1
    $Diff=_DateDiff("h",$Date,_NowCalc())
    If $Diff>="0" And $Diff<"10" Then
    $ActWin=WinGetTitle("")
    $ContentNow=FileRead($Path)
    StringRegExp($ContentNow,$ActWin&"(.*?)",3)
    If @error Then
    FileWrite($Path,$ActWin&": 1"&@CRLF)
    Else
    $ActNum=StringRegExp($ContentNow,$ActWin&": (.*?)\z",3)
    FileDelete($Path)
    FileWrite($Path,StringRegExpReplace($ContentNow,$ActWin&": (.*?)\z",$ActNum[0]+0.5))
    EndIf
    Sleep(0.5*60000)
    Else
    Exit
    EndIf
    WEnd

    [/autoit]

    Rechtschreibfehler sind Spezialeffekte meiner Tastatur.

    Einmal editiert, zuletzt von owi dowi spinn (31. Januar 2010 um 10:57)

  • @Sprenger:
    Das ist ja so gut wie egal - ich möchte nur einfach das Fenster nicht doppelt aufgeschrieben werden, sondern dahinter die Nummer um eins erhöht wird. Und das geht mysteriöserweise nicht bei meinem Script. :(

    Rechtschreibfehler sind Spezialeffekte meiner Tastatur.

    • Offizieller Beitrag

    Das geht mit einer Inidatei viel einfacher:

    Spoiler anzeigen
    [autoit]


    #include <Process.au3>
    HotKeySet('{ESC}', '_End')
    Global $sInifile = @ScriptDir & '\ActiveProcess.ini'
    AdlibRegister('_SaveProcessname', 30000)

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

    While Sleep(50)
    WEnd

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

    Func _SaveProcessname()
    Local $sProcessName, $iCount
    $sProcessName = _ProcessGetName(WinGetProcess(''))
    $iCount = IniRead($sInifile, $sProcessName, 'Count', 0)
    $iCount += 1
    IniWrite($sInifile, $sProcessName, 'Count', $iCount)
    EndFunc

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

    Func _End()
    Exit
    EndFunc

    [/autoit]
  • ich habs mal so probiert aber irgentwie wird da nur müll in die datei geschrieben

    Spoiler anzeigen
    [autoit]


    Dim $aWins[9999999]
    $Datei = "Windows.txt"
    AdlibRegister("Write", 30000)

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

    While 1
    Sleep(10)
    WEnd

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

    Func Write()
    $Title = WinGetText("[ACTIVE]")

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

    For $x = 0 To UBound($aWins) - 1
    If StringInStr($aWins[$x], $Title) <> 0 Then
    $Title = Number(StringLeft($aWins[$x], 1))
    If $Title > 0 And IsNumber($Title) Then
    $Title += 1
    $aWins[$x] = StringTrimLeft($aWins[$x], 1)
    $aWins[$x] = $Title & " " & $aWins[$x]
    ExitLoop
    Else
    $aWins[$x] = "1 " & $aWins[$x]
    ExitLoop
    EndIf
    EndIf
    If $aWins[$x] = "" Then
    $aWins[$x] = $Title
    ExitLoop
    EndIf
    Next
    For $x = 0 To UBound($aWins) - 1
    If $aWins[$x] = "" Then
    ExitLoop
    Else
    $Title &= $aWins[$x] & @CRLF
    EndIf
    Next
    $hFile = FileOpen($Datei,2)
    FileWrite($hFile, $Title)
    FileClose($hFile)
    EndFunc ;==>Write

    [/autoit]

  • Was soll den

    [autoit]

    AdlibRegister

    [/autoit]


    sein?!
    Edit: AdlibEnable?

    Rechtschreibfehler sind Spezialeffekte meiner Tastatur.