Tastenkombination abfangen und ersetzen

  • ICQ hat einen Bug der mich tierisch nervt:

    Wenn man Alt Gr + E drückt um das € Zeichen zu schreiben, wird stattdessen die aktuelle Nachricht gelöscht und durch die letzte ersetzt.
    Nun habe ich mir gedacht, daß man ein möglichst ressourcensparendes AutoIt Script im Hintergrund laufen lassen könnte, daß diese Tastenkombination abfängt, und statt dessen alt + 0128 ausgibt, was ebenfalls das Eurozeichen schreibt.

    Meine ersten zaghaften Versuche in der Form:

    [autoit]


    hotkeyset ("{ralt} + e", "SendEuro" )

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

    Func SendEuro()
    Send("{ASC 0128}"
    endFunc

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

    while 1
    sleep(1)
    wend

    [/autoit]

    brachten leider keinen Erfolg :(

    Wie muss ich am besten vorgehen?

    Einmal editiert, zuletzt von Riddip (12. Februar 2009 um 12:50)

  • Schon mal danke für die Antworten, aber das halt leider keine Besserung gebracht. Und ich bekomme auch keine Fehlermeldung, sondern es passiert einfach nix, das Script läuft aber das Zeichen wird nicht ersetzt.

    Zum Testen habe ich übrigens den ascii code 0555 anstatt 0128 gewählt, denn dann müsste wenn es klappt anstatt des € ein + kommen und man sieht direkt ob das Ersetzen funktioniert, was aber nicht der Fall ist.

    Und wenn ich es mit

    [autoit]

    hotkeyset ("{strg}+{alt}+e", "SendEuro" )

    [/autoit]


    versuche, dann bringt altgr+e weiterhin das Eurozeichen, aber beim drücken der S-Taste erscheint das Plus 8| . Also irgendwas scheint zu funktionieren, aber nachvollziehbar ist es für mich leider nicht ?(

    2 Mal editiert, zuletzt von Riddip (5. Februar 2009 um 18:39)

  • für mich geht es nur so: (und manchmal bleiben strg und alt hängen.)

    [autoit]

    hotkeyset ("^!e", "SendEuro" )

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

    Func SendEuro()
    hotkeyset ("^!e")
    Send("{ALTup}{ctrlup}{LALT up}{RALT up}{LCTRL up}{RCTRL up}{ASC 0128}")
    hotkeyset ("^!e", "SendEuro" )
    EndFunc

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

    while 1
    sleep(100000000)
    WEnd

    [/autoit]
  • Ok, ich habe das jetzt mal ausprobiert. Das Script schreibt richtig das € Zeichen, aber danach hängt jedesmal die ganze Tastatur: Ich kann erst wieder was eingeben wenn ich das Script beende und anschließend den Taskmanager aufrufe.
    Und wenn ich anstatt des Ascii-Zeichens einen normalen Text ausgeben möchte wie z.B.

    [autoit]

    Send("{ALTup}{ctrlup}{LALT up}{RALT up}{LCTRL up}{RCTRL up}{test}")

    [/autoit]


    dann wird nur der erste Buchstabe "t" von "test" geschrieben, und schon hängt es wieder...

  • So geht es besser, aber der Euro wird erst gesendet, wenn ALT und CTRL losgelassen werden.

    [autoit]

    Func SendEuro()
    While _IsPressed("11") Or _IsPressed("12")
    Sleep(10)
    WEnd
    Send("{ASC 0128}")
    EndFunc

    [/autoit]
  • [autoit]

    hotkeyset ("^!e", "SendEuro" )

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

    Func SendEuro()
    hotkeyset ("^!e")
    Send("€")
    hotkeyset ("^!e", "SendEuro" )
    EndFunc

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

    while 1
    sleep(100000000)
    WEnd

    [/autoit]
  • Senthors Lösung funktioniert prinzipiell, aber nach dem schreiben des Eurozeichens hängt auch dort anschließend die Tastatureingabe. Aber progandys Lösung klappt wunderbar. Der komplette Code sieht dann so aus:

    [autoit]

    #Include <Misc.au3>

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

    hotkeyset ("^!e", "SendEuro" )

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

    Func SendEuro()
    While _IsPressed("11") Or _IsPressed("12")
    Sleep(10)
    WEnd
    Send("{ASC 0128}")
    EndFunc

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

    while 1
    sleep(100000000)
    WEnd

    [/autoit]

    Ich danke allen Beteiligten für die Hilfe, vor allem natürlich progandy ;) und setze den Beitrag auf gelöst :D

    Einmal editiert, zuletzt von Riddip (12. Februar 2009 um 12:57)