Fenster deaktivieren

  • [autoit]

    HotKeySet("{ESC}", "Ende")
    ToolTip("Beenden kannst du das Programm ganz Easy mit ESC!",0,0)
    $Text = InputBox("MSN Shit","Hier kannste eingeben was gesendet werden soll sobald ein MSN Fenster auf ist.")
    $Zeit = InputBox("MSN Shit","Hier gibst du ein in welchem Zeiabstand gecheckt werden soll, ob dir jemand geschrieben hat. Und zwar in Millisekunden (1 Sek = 1000 Millisek).")
    $Titel = WinGetTitle("[CLASS:IMWindowClass]")
    $TitelNew = StringTrimRight($Titel,15)

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

    If ProcessExists("msnmsgr.exe") Then
    While 1
    Sleep($Zeit)
    WinWait("[CLASS:IMWindowClass]")
    WinActivate("[CLASS:IMWindowClass]")
    WinWaitActive("[CLASS:IMWindowClass]")
    Send("Hallo "&$TitelNew&"")
    Send("^{ENTER}")
    Send($Text)
    Send("{ENTER}")
    WinSetState($TitelNew,"",@SW_DISABLE)
    WEnd
    Else
    MsgBox(0,"MSN Shit","Meinst du nicht das MSN wenigstens gestartet werden sollte?^^ Sonst geht das schlecht, ne? ;p")
    EndIf

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

    Func Ende()
    MsgBox(0,"cYa","Hauste rein",5)
    WinSetState($TitelNew,"",@SW_ENABLE)
    Exit 0
    EndFunc

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

    So sieht mein Code bis jetzt aus.
    Ich möchte an jedes Fenster das sich neu öffnet(MSN Fenster) >eine< Nachricht schreiben, das fenster soll danach nicht geclosed werden, damit ich nachprüfen kann was mir geschickt wurde.
    Nun habe ich mir gedacht ich schicke die Nachricht ab, "verstecke" das Fenster und AutoIT greift nichtmehr drauf zu... FALSCH gedacht, trotz das deaktiviert ist schreibt das Script weiterhin rein X(

    Gibts ne bessere Idee? Habs auch schon mit Hide & show versucht.. passiert ähnliches..

    Gruß

  • nur weil du das fenster nicht siehst, heißt es ja nicht, dass es nicht da ist. das sagt ja "hide" schon aus.
    du kannst den status des fensters abfragen, wenn es sichtbar ist, code senden, wenn unsichtbar, dann nicht ... und dann (wenn ich es richtig verstanden habe), ein fenster nach dem anderen prüfen.

    was mir so auf die schnelle einfällt ...

  • [autoit]

    HotKeySet("{ESC}", "Ende")
    ToolTip("Beenden kannst du das Programm ganz Easy mit ESC!",0,0)
    $Text = InputBox("MSN Shit","Hier kannste eingeben was gesendet werden soll sobald ein MSN Fenster auf ist.")
    $Zeit = InputBox("MSN Shit","Hier gibst du ein in welchem Zeiabstand gecheckt werden soll, ob dir jemand geschrieben hat. Und zwar in Millisekunden (1 Sek = 1000 Millisek).")
    $Titel = WinGetTitle("[CLASS:IMWindowClass]")
    $TitelNew = StringTrimRight($Titel,15)
    $Status = WinGetState($Titel)

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

    If Not ProcessExists("msnmsgr.exe") Then
    MsgBox(0,"MSN Shit","Meinst du nicht das MSN wenigstens gestartet werden sollte?^^ Sonst geht das schlecht, ne? ;p")
    Exit 0
    EndIf

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

    While 1
    If WinGetState($Titel) = 23 Then
    Sleep($Zeit)
    WinActivate($Titel)
    WinWaitActive($Titel)
    Send("Hallo "&$TitelNew&"")
    Send("^{ENTER}")
    Send($Text)
    Send("{ENTER}")
    WinSetState($Titel,"",@SW_HIDE)
    EndIf
    WEnd

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

    Func Ende()
    MsgBox(0,"cYa","Hauste rein",5)
    WinSetState($Titel,"",@SW_SHOW)
    Exit 0
    EndFunc

    [/autoit]

    So sieht es jetzt aus ^^
    Aber er geht die Schleife irgendwie nur einmal durch oder so, denn er macht die Aktion jetzt immer nur mit einem Fenster <.<

    Pls Help :/