100%cpu

  • [autoit]

    #include <file.au3>
    ;~ Opt("TrayIconHide", 1)
    $last = "0"
    $log = WinActive("TeamSpeak 2")
    If $log = -1 Then
    MsgBox(0, "Error", "error teamspeak is not open")
    Exit
    EndIf
    While 1
    $msg = WinGetText("TeamSpeak 2")
    $parts = StringSplit($msg, @CRLF)
    $letzte = $parts[$parts[0]-3]
    Select
    Case StringInStr($letzte,"joined channel")
    $res = StringRegExp($letzte, "([A-Za-z. 0-9]*) joined channel", 1)
    If $last = $res[0] Then
    ContinueLoop
    Else
    TrayTip("Teamspeak", $res[0] , 5)
    $last = $res[0]
    EndIf
    EndSelect
    Sleep(100)
    WEnd

    [/autoit]

    also ich möchte das das programm die teamspeak meldungen ausliest und anzeigt wenn jemand in einen channel gejoint ist, das tut das script, allerdings mit 100% cpu auslastung
    ich hoffe ich könnt das irgendwei schöner machen :klatschen:

    3 Mal editiert, zuletzt von p3aNut (7. September 2006 um 15:23)

    • Offizieller Beitrag

    So?

    [autoit]


    #include <file.au3>
    ;~ Opt("TrayIconHide", 1)
    $last = "0"
    $log = WinActive("TeamSpeak 2")
    If $log = -1 Then
    MsgBox(0, "Error", "error teamspeak is not open")
    Exit
    EndIf
    While 1
    $msg = WinGetText("TeamSpeak 2")
    $parts = StringSplit($msg, @CRLF)
    $letzte = $parts[$parts[0]-3]
    Select
    Case StringInStr($letzte,"joined channel")
    $res = StringRegExp($letzte, "([A-Za-z. 0-9]*) joined channel", 1)
    If $last = $res[0] Then
    Sleep(100)
    ContinueLoop
    Else
    TrayTip("Teamspeak", $res[0] , 5)
    $last = $res[0]
    EndIf
    EndSelect
    Sleep(100)
    WEnd

    [/autoit]

    peethebee

  • Code
    C:ProgrammeAutoIt3teamspeak.au3 (12) : ==> Array variable subscript badly formatted.: 
    $letzte = $parts[$parts[0]-3] 
    $letzte = $parts[^ ERROR


    hm ich kapier nicht wieso die meldung nur manchmal kommt

    /e liegt daran das manchmal wingettext nichts bekommt und somit leer ist ._.

    2 Mal editiert, zuletzt von p3aNut (7. September 2006 um 16:55)

    • Offizieller Beitrag

    HI,

    vielleicht: (ungetestet!!!)

    [autoit]

    $last = "0"
    If WinActive("TeamSpeak 2") = 0 Then
    MsgBox(0, "Error", "error teamspeak is not open")
    Exit
    EndIf
    While 1
    $msg = WinGetText("TeamSpeak 2")
    $parts = StringSplit($msg, @CRLF)
    If (UBound($parts) -3) > -1 Then
    $letzte = $parts[$parts[0] - 3]
    Select
    Case StringInStr($letzte, "joined channel")
    $res = StringRegExp($letzte, "([A-Za-z. 0-9]*) joined channel", 1)
    If $last = $res[0] Then
    Sleep(100)
    ContinueLoop
    Else
    TrayTip("Teamspeak", $res[0], 5)
    $last = $res[0]
    EndIf
    EndSelect
    Else
    Sleep(100)
    EndIf
    WEnd

    [/autoit]

    So long,

    Mega