Trillian

    • Offizieller Beitrag

    Hi!

    Ich versuche gerade erfolglos, ein Chatfenster von Trillian (https://autoit.de/www.trillian.cc) zu manipulieren. ControlSend usw. funktionieren nicht. Hat jemand eine Idee, wie ich da dennoch per Skript herankommen und eine Nachricht hinterlassen könnte?
    Das sollte möglichst passieren, ohne dass aus einem herausgetabbt wird oder so, sonst könnte ich es ja auch per Hand machen.
    Danke für eure Ideen.

    [Blockierte Grafik: http://img-up.net/?res=2006-10-11p45.png]
    [Blockierte Grafik: http://img-up.net/?res=2006-10-11A2u_.png]

    peethebee

  • Moin,

    darf man fragen was du erreichen möchtest? Soll eine Nachricht geschrieben werden wenn du gerade nicht am Rechner bist oder was soll es werden wenn es fertig ist?

    PS: Bin auch Trillian nutzer :)

    Mfg

    Analyzer

    • Offizieller Beitrag

    Hi!

    InGameICQ -> Ich will ohne das Spiel zu schließen per HotKey ICQ-Text eingeben und dann senden. Alles, ohne das das Game zu geht.

    Hier mal ein erstes Skript, das nciht geht:

    [autoit]


    ; ICQInGame von peethebee 2006

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

    ; Start- und Endhotkey
    HotKeySet("^f", "onoff")

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

    Global $active = 0
    Global $key = ""

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

    While 1
    Sleep(20)
    WEnd

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

    Func onoff()
    If $active = 0 Then
    $active = 1
    ;~ ControlFocus("Friends", "", "Unicode Trillian Window2")
    HotKeySet("a", "write")
    HotKeySet("b", "write")
    HotKeySet("c", "write")
    HotKeySet("d", "write")
    HotKeySet("{ENTER}", "_send")
    Else
    $active = 0
    HotKeySet("a")
    HotKeySet("b")
    HotKeySet("c")
    HotKeySet("d")
    EndIf
    EndFunc ;==>onoff

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

    Func write()
    $key &= @HotKeyPressed
    ToolTip($key)
    EndFunc ;==>write

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

    Func _send()
    ToolTip("senden:")
    ControlSend("Daniel : ICQ - 329896843", "Unicode Trillian Window", 5001, $key)
    EndFunc ;==>_send

    [/autoit]

    peethebee

  • Hi,

    hab ich auch schon versucht aber es scheint nicht zu gehen :(
    PS: Bin auch trillian nutzer²

    ;)

  • Hi,

    hmm, also wenn ich das ICQ Fenster in den Vordergrund hole, sitzt der Curser ja schon an der passenden stelle. Dann würde ein Send() ausreichen, da du aber es nicht im Vordergrund haben möchtest, bleiben ja nicht mehr wirklich viele Möglichkeiten ...

    Wenn es aber eh nur ein Standardtext ist, warum benutzt du nicht die abwesenheits funktion vom Trillian?

    Mfg

    Analyzer

  • Naja es sollte wohl nur ein Beispiel sein.
    Ich würde mir sowas wie
    _TrillianSetStatus( $aStatus [,$aLabel, $aMessage [, $aSave = 1 ] ])
    _TrillianSend( $aWindow, $aMessage )

    usw. wünschen aber ich habs auch nicht hingekriegt wie gesagt

    Einmal editiert, zuletzt von Daniel W. (11. Oktober 2006 um 16:02)

    • Offizieller Beitrag
    Zitat

    Wenn es aber eh nur ein Standardtext ist, warum benutzt du nicht die abwesenheits funktion vom Trillian?


    Wenn es so wäre, würde ich das machen *g*. Aber ich will ganz normal alles tippen können - bloß halt nicht aus dem Game raus.

    peethebee

  • Evt. kann man da ein Trillianobjekt erstellen und dem die Sachen übergeben. Müsste man mal in Erfahrung bringen.

    • Offizieller Beitrag

    Hi!

    Habe mich mal wieder dran gesetzt und bin jetzt schon deutlich weiter. Er sendet jetzt Texte und ändert dazu den Fensterfokus nicht. Allerdings ist die momentane Variante über HotKeySet nicht optimal, weil die meisten Spiele (darunter auch mein Testkandidat) keine globalen HotKeys zulassen. Ich habe schon herausgefunden, das _IsPressed funktioniert. Also müsste man nur die beiden Stellen umbauen. Das werde ich bei Gelegenheit machen. Das einzige Problem ist, wie ich unterscheide, ob eine Taste zweimal in Folge gedrückt wurde. Hat da jemand einen schnellen Trick dazu?

    Hier mal der aktuelle Stand:

    Spoiler anzeigen
    [autoit]


    ; TrillianInGame von peethebee 2006

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

    while 1

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

    #include <Array.au3>
    #include <Misc.au3>

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

    _Singleton("TrillianInGame")

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

    ; Starthotkey
    HotKeySet("^f", "_send")
    HotKeySet("^x", "_quit")

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

    Global $active = 0
    Global $key = ""
    Global $program_list_array[11]
    Global $exclude[1]
    _ArrayAdd($exclude, "Hamachi")
    _ArrayAdd($exclude, "Program Man")
    _ArrayAdd($exclude, "AutoIt Help")
    _ArrayAdd($exclude, "Galenda")
    _ArrayAdd($exclude, "Window Info")
    _ArrayAdd($exclude, "Firefox")
    _ArrayAdd($exclude, "Opera")
    _ArrayAdd($exclude, "Internet Explorer")
    _ArrayAdd($exclude, "Skype")
    _ArrayAdd($exclude, "Scite")
    _ArrayAdd($exclude, "Trillian")
    _ArrayAdd($exclude, "Media Player")
    _ArrayDelete($exclude, 0)
    ;~ _ArrayDisplay($exclude, "Excludes")

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

    While 1
    Sleep(20)
    WEnd

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

    Func _send()

    ; Fensterauswahl
    ToolTip("")
    Global $var = WinList()
    Global $program_list = ""
    Global $counter = 1
    Global $program_list_array[11]

    For $i = 1 To $var[0][0]
    ; Only display visble windows that have a title
    If $var[$i][0] <> "" And IsVisible($var[$i][1]) Then
    For $j = 0 To UBound($exclude) - 1
    If StringInStr($var[$i][0], $exclude[$j], 0) <> 0 Then ContinueLoop 2
    Next
    $program_list = $program_list & $counter & ":" & @TAB & $var[$i][0] & @CRLF
    $program_list_array[$counter] = $var[$i][1]
    $counter += 1
    EndIf
    Next
    ToolTip($program_list, -1280, 0, "Trillian-Fensterauswahl")

    ; Hotkeys setzen
    For $k = 1 To 9
    HotKeySet("{NUMPAD" & $k & "}", "choose_partner")
    Next
    EndFunc ;==>_send

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

    Func choose_partner()
    ToolTip("")

    ; Nummernblock-Hotkeys zurücksetzen
    For $k = 1 To 9
    HotKeySet("{NUMPAD" & $k & "}")
    Next

    Global $win_handle = $program_list_array[StringMid(@HotKeyPressed, 8, 1) ]

    ; Aufnahme-Hotkeys setzen
    For $i = 65 To 90
    HotKeySet(Chr($i), "collect")
    Next
    For $i = 97 To 122
    HotKeySet(Chr($i), "collect")
    Next
    HotKeySet(Chr(8), "collect") ; Backspace
    HotKeySet(Chr(13), "collect") ; Enter
    HotKeySet(Chr(32), "collect") ; Space
    HotKeySet(Chr(33), "collect")
    HotKeySet(Chr(34), "collect")
    HotKeySet(Chr(40), "collect")
    HotKeySet(Chr(41), "collect")
    HotKeySet(Chr(42), "collect")
    HotKeySet(Chr(46), "collect")

    Global $key = ""

    ;~ ControlSend($win_handle, "", "Unicode Trillian Window2", "Test", 1)
    ;~ ControlSend("Daniel", "", "Unicode Trillian Window", "Test", 1)
    EndFunc ;==>choose_partner

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

    Func collect()
    If @HotKeyPressed = Chr(13) Then
    ControlSend($win_handle, "", "Unicode Trillian Window2", $key, 1)
    ControlSend($win_handle, "", "Unicode Trillian Window2", "{ENTER}")

    ; Aufnahme-Hotkeys zurücksetzen
    For $i = 65 To 90
    HotKeySet(Chr($i))
    Next
    For $i = 97 To 122
    HotKeySet(Chr($i))
    Next
    HotKeySet(Chr(8)) ; Backspace
    HotKeySet(Chr(13)) ; Enter
    HotKeySet(Chr(32)) ; Space
    HotKeySet(Chr(33))
    HotKeySet(Chr(34))
    HotKeySet(Chr(40))
    HotKeySet(Chr(41))
    HotKeySet(Chr(42))
    HotKeySet(Chr(46))

    ToolTip("")

    ElseIf @HotKeyPressed = Chr(8) Then
    $key = StringTrimRight($key, 1)
    ToolTip($key, -1280, 0, "Zu sendender Text")
    Else
    $key &= @HotKeyPressed
    ToolTip($key, -1280, 0, "Zu sendender Text")
    EndIf

    EndFunc ;==>collect

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

    ; help file
    Func IsVisible($handle)
    If BitAND(WinGetState($handle), 2) Then
    Return 1
    Else
    Return 0
    EndIf
    EndFunc ;==>IsVisible

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

    Func _quit()
    Exit
    EndFunc ;==>_quit

    [/autoit]
  • [autoit]

    If _IsPressed( "01" ) Then
    ;Bla
    While _IsPressed( "01" )
    Sleep(5)
    Wend
    EndIf

    [/autoit]


    So müsste das gehen oder?

  • ist es nicht möglich dass du, á la notebook, eine Trilliabn Taste konfigurierst, zb strg, und NUR wenn die gedrückt wird sendet er?

    Dann wäre das mit den Hotkeys doch gelöst?

    • Offizieller Beitrag

    Hi!

    Noch mal aktualisiert. Jetzt sollte die Auswahl des Zielfensters schon funktionieren. Was noch Probleme macht, ist die umgestellte Funktion "collect", die noch nicht richtig arbeitet. Dürfte ein Problem mit Hex-/Dezimalzahlen sein, finde es aber gerade nicht:

    Spoiler anzeigen
    [autoit]


    ; TrillianInGame von peethebee 2006

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

    #include <Array.au3>
    #include <Misc.au3>

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

    _Singleton("TrillianInGame")

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

    ; Starthotkey
    HotKeySet("^f", "_send")
    HotKeySet("^x", "_quit")

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

    Global $active = 0
    Global $key = ""
    Global $program_list_array[11]
    Global $exclude[1]
    _ArrayAdd($exclude, "Hamachi")
    _ArrayAdd($exclude, "Program Man")
    _ArrayAdd($exclude, "AutoIt Help")
    _ArrayAdd($exclude, "Galenda")
    _ArrayAdd($exclude, "BF2")
    _ArrayAdd($exclude, "Window Info")
    _ArrayAdd($exclude, "Firefox")
    _ArrayAdd($exclude, "Opera")
    _ArrayAdd($exclude, "Internet Explorer")
    _ArrayAdd($exclude, "Skype")
    _ArrayAdd($exclude, "Scite")
    _ArrayAdd($exclude, "Trillian")
    _ArrayAdd($exclude, "Media Player")
    _ArrayDelete($exclude, 0)
    ;~ _ArrayDisplay($exclude, "Excludes")

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

    While 1
    Sleep(20)
    WEnd

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

    Func _send()

    ; Fensterauswahl
    ToolTip("")
    Global $var = WinList()
    Global $program_list = ""
    Global $counter = 1
    Global $program_list_array[11]

    For $i = 1 To $var[0][0]
    ; Only display visble windows that have a title
    If $var[$i][0] <> "" And IsVisible($var[$i][1]) Then
    For $j = 0 To UBound($exclude) - 1
    If StringInStr($var[$i][0], $exclude[$j], 0) <> 0 Then ContinueLoop 2
    Next
    $program_list = $program_list & $counter & ":" & @TAB & $var[$i][0] & @CRLF
    $program_list_array[$counter] = $var[$i][1]
    $counter += 1
    EndIf
    Next
    ToolTip($program_list, -1280, 0, "Trillian-Fensterauswahl")

    ; Warten bis eine Taste gedrückt wurde
    While 1
    For $l = 1 To 9
    If _IsPressed(60 + $l) Then
    choose_partner($l)
    ExitLoop 2
    EndIf
    Next
    Sleep(20)
    WEnd

    EndFunc ;==>_send

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

    Func choose_partner($nr)
    ToolTip("")

    Global $win_handle = $program_list_array[$nr]

    Global $key = ""
    collect()

    EndFunc ;==>choose_partner

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

    Func collect()
    While 1
    For $i = 0x30 To 0x6F
    If _IsPressed($i) Then
    Switch $i
    Case 0x08
    $key = StringTrimRight($key, 1)
    ToolTip($key, -1280, 0, "Zu sendender Text")
    Case 0x0D
    ControlSend($win_handle, "", "Unicode Trillian Window2", $key, 1)
    ControlSend($win_handle, "", "Unicode Trillian Window2", "{ENTER}")
    ToolTip("")
    Return
    Case Else
    $key &= Chr($i)
    ToolTip($key, -1280, 0, "Zu sendender Text")
    EndSwitch
    EndIf
    Sleep(20)
    Next
    WEnd

    EndFunc ;==>collect

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

    ; help file
    Func IsVisible($handle)
    If BitAND(WinGetState($handle), 2) Then
    Return 1
    Else
    Return 0
    EndIf
    EndFunc ;==>IsVisible

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

    Func _quit()
    Exit
    EndFunc ;==>_quit

    [/autoit]

    peethebee