WinGettitle

  • ich bin total am verzweifeln!
    ich will das mein prog. notiert welches fesnter ich momentan aufhabe!
    dafür benutze ich:

    [autoit]

    $title = WinGetTitle("[active]")
    FileWriteLine("risultati.txt",$title)

    [/autoit]


    so und nun mein problem!!!!
    Das ganze ist in einer IF schleife ...also könnt ihr euch schon denken was passiert...er schreibt ein fenster 100 mal und noch mehr in meine text datei!
    ich will aber nur das er ein fenster einmal aufschreibt...sagen wir ich bin in mozilla aktiv ..er schreibt mozilla auf!
    dann wechsel ich zu einem anderen fenster..dann will ich das er das fenster notiert...sobald ich wieder zu mozilla firefox wechsel soll er firefox wieder aufschreiben....
    ich hoffe ihr habt es verstanden! :)

  • Dann musst Du doch nur einfach bevor Du den Fenstertitel in die Textdatei schreibst, überprüfen, ob dieser Text schon drinnen steht.
    Z.B. mit FileReadLine (natürlich in einer Schlaufe um alle Linien überprüfen zu können).

    Gruss
    Veronesi

  • ich will damit überprüfen wenn ich meinen kleinen bruder an meinem pc lasse das er keine ordner oder seiten öffnet be denen ich nicht will das er es tut...ok das mit den Seiten sperren ist leicht zu klären...und auch könnte ich den verlauf bei firefox checken indem ich in die chronik schaue..aber leider löscht er sie, ich geh zumindest davon aus!
    aber mit den ordnern weis ich nicht recht ! und da er keine ahnung von autoit hat wäre es halt die perfekte möglichkeit! :)
    also ich kann euch mit 100% sicherheit sagen ..ich will keinen trojaner damit basteln
    mfg

  • Dann musst Du doch nur einfach bevor Du den Fenstertitel in die Textdatei schreibst, überprüfen, ob dieser Text schon drinnen steht.
    Z.B. mit FileReadLine (natürlich in einer Schlaufe um alle Linien überprüfen zu können).

    Gruss
    Veronesi

    das wäre ja i.wie nicht möglich da ich nicht weis wonach ich in der text datei schauen soll ..da die seiten die geöffnet werden ja immer unterschiedlich sind

  • Nein, den Titel musst du natürlich schon auslesen.
    Das hast du ja schon.

    Aber anstatt den Titel nun einfach in die Textdatei reinzuschreiben, überprüfst du zuerst, ob dieser Titel nicht schon drin steht.

  • Hier eine mögliche Lösung.
    Vielleicht nicht ganz so elegant, aber es funktioniert!

    Spoiler anzeigen
    [autoit]

    Local $Title = "", $LastTitle = "", $Found, $Line = ""
    Local $File = @ScriptDir & "\Title.txt", $hFile

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

    While Sleep(100)
    $Title = WinGetTitle("[Active]")

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

    If $Title <> $LastTitle Then ;Search only in file when window title has changed!
    $LastTitle = $Title
    $hFile = FileOpen($File,0)
    $Found = False

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

    While 1
    $Line = FileReadLine($hFile)
    If @error <> 0 Then ExitLoop ;OEF is reached
    If $Line = $Title Then
    $Found = True
    ExitLoop
    EndIf
    WEnd

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

    FileClose($hFile)

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

    If Not $Found Then ;Line not found, write it!
    $hFile = FileOpen($File,2) ;Write only the last window title!
    FileWriteLine($hFile,$Title)
    FileClose($hFile)
    EndIf
    EndIf
    WEnd

    [/autoit]

    Natürlich könnte man das Ganze noch kürzen, weil ja im Textfile nur immer einer Zeile drinnen steht.
    Also könnte man diese While Schlaufe auch noch streichen.....

    Aber vielleicht willst du ja auch alle Fenster nacheinander drinnen haben.....
    Dann müsste man FileOpen($File,2) durch FileOpen($File,1) ersetzen!