Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Tastatureingaben abfangen (https://www.delphipraxis.net/201201-tastatureingaben-abfangen.html)

Sugar 1. Jul 2019 19:35

Delphi-Version: 7

Tastatureingaben abfangen
 
Hallo Forum,

seit kurzem muss ich Erweiterungen innerhalb eines ERP-Systems entwickeln und habe dazu nur eine recht verwirrende Script-Sprache zur Verfügung. Es gibt keinerlei Syntax-Prüfung oder Code-Vervollständigung. Ich möchte mir nun ein Delphi-Programm schreiben, das mir etwas Arbeit abnimmt. Mir schwebt ein Programm vor, dass zunächst einmal auf Tastenkürzel einfach nur eine von mir gewünschte Zeichenfolge in den aktiven Editor schreibt. Als Beispiel: Ich möchte auf Tastenfruck (z.B. "F2") die Zeichenfolge "ABC" in dem aktiven Fenster einfügen. Ich weiß nun jedoch nicht, wie ich ein Delphi Programm dazu bekommen Eingaben in einem fremden Fenster auszuwerten.

Ich bin dankbar für jeden Hinweis

gruß
Heiko

zeras 1. Jul 2019 19:50

AW: Tastatureingaben abfangen
 
Ich habe mal von Winspy gehört.
Damit kannst du vielleicht das Objekt finden, in welches du schreiben möchtest.
Dann noch Tastatureingaben simulieren. Hier habe ich aber leider kein Beispiel zur Hand.

hier

Sugar 1. Jul 2019 19:55

AW: Tastatureingaben abfangen
 
WinSpy kenne ich (etwas)...

Mein Ansatzt ist aber ein Anderer. Ich arbeite innerhalb eines Editors - z.B. Word etc. Ich möchte jetzt, dass wenn ich F2 drücke einfach irgendein Zeichen "eingegeben" wird. Mein Programm soll also die Tastatureingaben erkennen und ggf. ändern. Ich stelle mir irgend einen Dienst etc. vor der die Tastatureingaben überwacht und verändert.

zeras 1. Jul 2019 19:59

AW: Tastatureingaben abfangen
 
Dann wir dir vielleicht ein globaler Tastaturhook weiterhelfen. Oder aber VBA, wenn du im Word arbeitest.

Sugar 1. Jul 2019 20:04

AW: Tastatureingaben abfangen
 
Word war nur ein Beispiel. Tatsächlich spielen sich die Eingaben in einem Editor ab, die von dem ERP-System zur Programmierung bereit gestellt wird. Ein simplder TExteditor

Tastaturhook hört sich gut an - nur wie wird sowas umgesetzt?

zeras 1. Jul 2019 20:18

AW: Tastatureingaben abfangen
 
Zitat:

Zitat von Sugar (Beitrag 1435758)
Tastaturhook hört sich gut an - nur wie wird sowas umgesetzt?

Suche doch mal hier im Forum. Da sind einige Ideen.

DeddyH 1. Jul 2019 20:28

AW: Tastatureingaben abfangen
 
https://assarbad.net/en/stuff/tutorials/hooks/
Ist zwar uralt, sollte aber erst einmal weiterhelfen.

Aviator 1. Jul 2019 21:04

AW: Tastatureingaben abfangen
 
Wie wäre es an dieser Stelle mit AutoHotKey? Tut genau das was du möchtest und du kannst darin sogar selbst noch eigene Logik verbauen. Eine einfache "Umwandlung" von F2 zu "ABC" ist ein Einzeiler in der Script Datei.

HolgerX 1. Jul 2019 22:26

AW: Tastatureingaben abfangen
 
Hmm..

oder wie in diesem Tread aus 2018:

https://www.delphipraxis.net/198742-...ml#post1419689

Das Testtool macht etwas ähnliches..

Es wartet auf einen (Hot-) Key und schickt einen Text als KeyEvent.

Musst jetzt nur eigenen Keys definieren und statt des Memos von Dir vorgegebene Texte schicken.

Dalai 1. Jul 2019 22:29

AW: Tastatureingaben abfangen
 
Zitat:

Zitat von Aviator (Beitrag 1435761)
Wie wäre es an dieser Stelle mit AutoHotKey?

In die Richtung AutoIt/AutoHotkey ging auch meine Überlegung. Während man in Delphi ein entsprechendes Programm noch entwickelt, ist man mit AutoIt/AutoHotkey schon längst fertig. Mit AutoIt ist es auch trivial Daten aus Dateien zu lesen, für den Fall, dass die Tastaturshortcuts und die damit verbundenen Texte änderbar sein sollen (und Hartkodierung vermieden wird). Beispiel einer solchen INI für eines meiner Skripte:
Code:
; ALT           = !
; STRG/CTRL     = ^
; SHIFT/UMSCHALT = +
; WIN           = #

[test]
Text="\r\rBei dieser Bestellung handelt es sich um einen Rahmenvertrag."
Hotkey="^6"
Grüße
Dalai


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz