Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Tastenanschläge erfassen ohne aktives Fenster zu beeinflusse (https://www.delphipraxis.net/50080-tastenanschlaege-erfassen-ohne-aktives-fenster-zu-beeinflusse.html)

Zacherl 20. Jul 2005 13:12


Tastenanschläge erfassen ohne aktives Fenster zu beeinflusse
 
Hallo,
ich habe folgendes Problem: Für eine Art RemoteDesktop Anwendung will ich, dass alle Tastenanschläge an die Client Anwendung gesendet werden. Dabei sollen KeyUp und KeyDown getrennt werden. Erst einmal: Wie kann ich die Tastenanschläge, die ich in mein aktives Fenster eingebe protokollieren? (Das Senden, etc ist klar) Dabei sollen Eingaben wie z.B. Alt+F4 oder Ähnliches mein Fenster nicht beeinflussen.
Dann stellt sich nocht die Frage, in welcher Form sollte ich die Anschläge zum Client senden und wie kann der Client die Anschläge in gewünschter Form (mit Shift, Alt, etc) simulieren? (Dazu hab ich ein paar Sachen gefunden, die aber nicht sehr überzeugend waren, da nicht alle Tasten simuliert werden konnten)

Florian

Olli 20. Jul 2005 13:14

Re: Tastenanschläge erfassen ohne aktives Fenster zu beeinfl
 
Such mal nach Hier im Forum suchenFensterhook (auch Hier im Forum suchenHook. Speziell Hier im Forum suchenTastaturhook (noch einer Hier im Forum suchenWH_KEYBOARD). Sinnvoller Suchbegriff könnte auch Hier im Forum suchenKeylogger sein.

Na gut, für den Service am Kunden habe ich noch Suchtags eingefügt :)

*grr* ... die Suche mag mich nicht. Die Begriffe sind aber richtig ... vielleicht mal Google versuchen?!

Zacherl 20. Jul 2005 13:16

Re: Tastenanschläge erfassen ohne aktives Fenster zu beeinfl
 
Ich wollte das wenn möglich ohne Hooks machen! Vielleicht über Application.OnMessage?

Florian

Olli 20. Jul 2005 13:18

Re: Tastenanschläge erfassen ohne aktives Fenster zu beeinfl
 
Zitat:

Zitat von Florian Bernd
Ich wollte das wenn möglich ohne Hooks machen! Vielleicht über Application.OnMessage?

Dann solltest du dich erstmal mit dem Nachrichtensystem von Windows vertraut machen. Wenn die Nachricht (zB Tastenanschlag) an ein anderes Fenster geht, wie - meinst du - kann deine Anwendung dann in ihrer Nachrichtenschleife diese Nachrichten bekommen?

Zacherl 20. Jul 2005 13:27

Re: Tastenanschläge erfassen ohne aktives Fenster zu beeinfl
 
Nein,
ich meinte, wenn man im Fenster meiner Anwendung eine Taste drückt, dürfte es doch eigentlich möglich sein, diese Nachricht abzufangen und dann msg.wparam und msg.lparam auf 0 zu setzen, um diese Message zu unterdrücken, oder?

Olli 20. Jul 2005 13:29

Re: Tastenanschläge erfassen ohne aktives Fenster zu beeinfl
 
Zitat:

Zitat von Florian Bernd
Nein,
ich meinte, wenn man im Fenster meiner Anwendung eine Taste drückt, dürfte es doch eigentlich möglich sein, diese Nachricht abzufangen und dann msg.wparam und msg.lparam auf 0 zu setzen, um diese Message zu unterdrücken, oder?

Natürlich ... allerdings setzt du da normalerweise nix auf 0, sondern fängst ab und bearbeitest einfach garnicht! Bestimmte Tastendrücke kannst du auf diese Weise aber nicht abfangen.

Zacherl 20. Jul 2005 13:36

Re: Tastenanschläge erfassen ohne aktives Fenster zu beeinfl
 
Ja, die müsste ich dann anders vortäuschen.
Nur wie simuliere ich die Tastenanschläge korrekt bei dem Client? Angenommen ich habe ein Memo, in dem ein Text steht. Wie kann ich diesen Zeichen für Zeichen (alos auch #10, etc) in den Ansi code umwandeln? Mit einer Funktion, die ich hier irgendwo gefunden habe, hat das nicht funktioniert. "PostKeyEx32" oder so hies die ...
Ich hab versucht, nach dem Auserten der Zeichen aus Memo1 diese auf Memo2 mit dieser Methode auszugeben. Es kamen allerdings nur seltsame Zeichen dabei raus ...

Florian


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:46 Uhr.

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