Nach drücken eines mittels HotKeySet gesetzten Hotkeys bleiben eben diese Tasten gedrückt

  • Hallo zusammen,

    ich habe folgendes Problem:

    Ich habe eine SQLite Datenbank, in der Texte mit zugehörigen Hotkeys gespeichert sind. Mein Script liest diese aus der Datenbank aus und registriert mit HotKeySet die entsprechenden Hotkeys. Sobald man diese drückt, wird der entsprechende Text aus der Datenbank, zu dem der Hotkey zugeordnet ist, ausgelesen und in einem aktiven Eingabefeld eingefügt.

    Bisher habe ich dies so gemacht, dass der Text in die Zwischenablage gelegt wurde und dann mittels Send Befehl und STRG-v im Eingabefeld eingefügt wurde.
    Nun wollte ich das Script so umbauen, dass es nicht mehr den Weg über die Zwischenablage geht, sondern den entsprechenden Text mittels Send() sofort in das aktive Eingabefeld einfügt, was als solches auch problemlos funktioniert.

    Jetzt kommt aber das Problem: Wenn ich den Text direkt so einfügen lasse, bleibt der Hotkey nach dem einfügen gedrückt. Heisst also: Wenn ich z. b. STRG+SHIFT+F2 als Hotkey drücke, wird der entsprechende Text direkt ins Eingabefeld geschrieben und danach werden die Tasten STRG + SHIFT gedrückt und bleiben auch gedrückt. Erst wenn ich direkt auf der Tastatur diese beiden Tasten dann jeweils einmal drücke, sind die Tasten wieder freigegeben.

    Ich habe schon ausprobiert, mittels Send() die beiden Tasten nochmals danach zu senden um das notwendige manuelle tippen auf der Tastatur zu simulieren, was aber keine Abhilfe schafft. Auch habe ich versucht, vor einfügen des Textes, den HotKey zu deregistrieren, den text einzufügen und dann den HotKey wieder zu registrieren. Der Fehler tritt aber auch dabei auf.


    Kann mir jemand verraten, warum dieser Fehler auftritt oder wie ich diesen umgehen kann?
    Sicher kann ich das Script weiterhin mit dem Umweg über die Zwischenablage laufen lassen, was aber nicht so elegant ist, wie den Text direkt einfügen zu lassen. zudem möchte ich das Script damit auch insofern erweitern, als dass ich dies auch als kleines Macro Tool verwenden kann, was aber mit dem Weg über die Zwischenablage nicht möglich ist.

  • Mit diesen Zeilen wereden die Texte aus der Datenbank gelesen und und die Hotkeys registriert:

    Spoiler anzeigen

    Hier jetzt die eigentlichen Funktionsaufrufe (hierbei der Weg über die 'Zwischenablage, was einwandfrei funktioniert):

    Spoiler anzeigen


    Hier der Weg mit direktem einfügen, bei dem das Problem auftritt:

    Spoiler anzeigen
  • Um dieses Verhalten zu umgehen musst du die korrekte Tastenfolge simulieren:CTRLDOWN + SHIFTDOWN + F2 + SHIFTUP + CTRLUP

    BTW: Etwas Code, um dein Problem zu zeigen, schadet nie. :rolleyes:

    Ich bin noch nicht dazu gekommen, dies zu testen. Was ich aber nicht verstehe: Wenn ich den Weg über die Zwischenablage gehe, tritt dieses Problem ja nicht auf. Warum tritt es nur auf, wenn ich den Text aus der Datenbank direkt über den Befehl Send() einfügen lasse?

    Weiß jemand, wodurch das verursacht wird? Und gibt es wirklich keinen anderen Weg, dass dieses Problem nicht auftritt?