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 getasynckeystate und Umlaute (https://www.delphipraxis.net/106508-getasynckeystate-und-umlaute.html)

FirstUserX 11. Jan 2008 21:07


getasynckeystate und Umlaute
 
Delphi-Quellcode:

for i := 0 to 254 do
        if boolean(getasynckeystate(i)) then
          begin
            if i = 65 then t:='A';
            if i = 66 then t:='B';
            if i = 67 then t:='C';
[...]
end;
Also das funktioniert für jeden Buchstaben und jede Zahl! Bloß bei Umlauten geht es nicht (ä,ö,ü)...Weis jemand warum?

SirThornberry 11. Jan 2008 21:10

Re: getasynckeystate und Umlaute
 
wo hast du den Quelltext her? Hast du dir mal die Hilfe zu GetAssyncKeyState angeschaut?

Namenloser 11. Jan 2008 21:28

Re: getasynckeystate und Umlaute
 
Dir ist schon klar, dass du 254 mal hinterinander prüfst, ob die i zugeordnete Taste gedrückt ist, und dann den Wert von i prüfst? Das ist... irgendwo zwischen kompliziert und sinnlos.
Im übrigen fragt getAsyncKeyState den Status von Tasten ab, nicht von Buchstaben. Daher versagt die Methode bereits bei Groß/kleinschreibung. Mal davon abgesehen, dass ja auch mehrere Tasten gedrückt sein können, und längst nicht jede Taste ein Buchstabe ist...

Wenn du schon unbedingt nen Keylogger schreiben willst (unterstell ich dir jetzt mal :mrgreen:), dann bitte nicht so, sondern mit Hooks, sonst tut mir meine CPU bzw die des Opfers jetzt schon Leid... :roll:

FirstUserX 11. Jan 2008 22:14

Re: getasynckeystate und Umlaute
 
Zitat:

Zitat von NamenLozer
Dir ist schon klar, dass du 254 mal hinterinander prüfst, ob die i zugeordnete Taste gedrückt ist, und dann den Wert von i prüfst? Das ist... irgendwo zwischen kompliziert und sinnlos.
Im übrigen fragt getAsyncKeyState den Status von Tasten ab, nicht von Buchstaben. Daher versagt die Methode bereits bei Groß/kleinschreibung. Mal davon abgesehen, dass ja auch mehrere Tasten gedrückt sein können, und längst nicht jede Taste ein Buchstabe ist...

Wenn du schon unbedingt nen Keylogger schreiben willst (unterstell ich dir jetzt mal :mrgreen:), dann bitte nicht so, sondern mit Hooks, sonst tut mir meine CPU bzw die des Opfers jetzt schon Leid... :roll:

Hallo,

es soll kein Keylogger werden, sondern ein Textersetzungsprogramm..also aus mfg soll Mit freundlichen Grüßen werden usw....
Mit Hooks kann ich nicht arbeiten, da macht jeder Virenscanner nen Mordsalarm...

DeddyH 11. Jan 2008 22:17

Re: getasynckeystate und Umlaute
 
Wären da nicht StringReplace oder ähnliche Funktionen nicht zielführender anstatt Tastatureingaben auszuwerten? Oder man setzt gleich auf SynEdit.

FirstUserX 12. Jan 2008 00:43

Re: getasynckeystate und Umlaute
 
Zitat:

Zitat von DeddyH
Wären da nicht StringReplace oder ähnliche Funktionen nicht zielführender anstatt Tastatureingaben auszuwerten? Oder man setzt gleich auf SynEdit.

Es soll systemweit funktionieren....

Namenloser 12. Jan 2008 00:46

Re: getasynckeystate und Umlaute
 
Und was machst du, wenn einer in ein feld m, in ein zweites f, und in ein drittes g eingibt? :gruebel:

SirThornberry 12. Jan 2008 10:39

Re: getasynckeystate und Umlaute
 
Zitat:

Zitat von NamenLozer
Und was machst du, wenn einer in ein feld m, in ein zweites f, und in ein drittes g eingibt? :gruebel:

dann prüft man einfach noch ab welches Fenster den Focus hat.

xy124 12. Jan 2008 11:28

Re: getasynckeystate und Umlaute
 
das getAsyncKeystate geht nach virtuellenTastencodes zumindestens in der delphi7 Hilfe findest du viel dazu!

Muetze1 12. Jan 2008 16:44

Re: getasynckeystate und Umlaute
 
Zitat:

Zitat von SirThornberry
Zitat:

Zitat von NamenLozer
Und was machst du, wenn einer in ein feld m, in ein zweites f, und in ein drittes g eingibt? :gruebel:

dann prüft man einfach noch ab welches Fenster den Focus hat.

Schlechter Weg: Beispiel Excel: Ein Feld ein "m", nächstes ein "f" und darauf ein "g".

- Fensterhandle immer das gleiche
- Mausklicks um in die nächste Zelle zu kommen, somit keine Tasteneingaben
- und wo schreibt er dann das "Mit freundlichen Grüßen" hin?


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:30 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