Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Tastendrücke (https://www.delphipraxis.net/1715-tastendruecke.html)

theomega 19. Dez 2002 11:53


Tastendrücke
 
Hallo
ich versuche einen Tastendruck zu simulieren, warum aber, funktioniert folgender Code nicht?
Code:
edit1.setfocus;
keybd_event(ord('r'),0,0,0);
Aus ein Paar versuchen, weiß ich, dass er den Tastencode der F3 Taste sendet und nicht den der "r" taste! Was mache ich falsch?

Tnx

TO

nailor 19. Dez 2002 12:02

Spontaner tipp: teste mal ord('R') nicht ord('r')!

Christian Seehase 19. Dez 2002 12:03

Moin The Omega,

die Taste ist R nicht r.

[EDIT]Mist, zu spät ;-)[/EDIT]

S - tefano 19. Dez 2002 12:40

Hi,

Muss man da nicht anstatt den ASCII- Nummern der jeweiligen Taste (die "ord" ja zurückgibt) Hex-Werte übergeben?
Ich hab mir dazu vor einigen Monaten mal was zum Ausprobieren geschrieben, hab aber die Sources nich mehr.
Da hatte ich mir für irgendetwas ne lange Liste von VKeys gemacht, die dann jeweils für einen HexWert ($irgendwas) standen.
Wahrscheinlich hab ich das so gemacht, weil man die HexWerte ja nich mit dieser IntToHex- Funktion errechnen und übergeben kann (die gibt ja nen string zurück).
Die hab ich mir dann von VK_A bis VK_Z und in kleinbuchstaben durchdefiniert.
Vermutlich gibts ne Unit in der die drinstehen, aber die hab ich damals nich gefunden...
Also, wie gesagt:
Mein Vorschlag is, die Acii- Werte als Hex zu übergeben und nich als Integer.
Is aber zu lange her, vielleicht is das auch der falsche Ansatz.

Bis denn,

S - tefano

Chewie 19. Dez 2002 13:02

Hi S-tefano,

es spielt keine Rolle, ob die Zahl als Hexadezimal- oder Dezimalzahl übergeben wird. Die Dezimalzahl ist ja nichts weiteres als eine Kodierung der binären Darstellung im Speicher, die Hexadezimalzahl ebenfalls. Die Unterscheidung ist sinnvoll, da Binärzahlen unbequem zu lesen sind und leicht in Hexadezimalzahlen umwandelbar sind, spielt allerdings bei der Verarrbeitung im Speicher keine Rolle.

Christian Seehase 19. Dez 2002 13:13

Moin S - tefano,

das Zahlensystem, in dem Du die Zahlen angibst spielt keine Rolle, ob Du also Zahlen zur Basis 10, oder zur Basis 16 nimmst, wird sich nicht im geringsten auf das Auswirken was die Funktion macht.

Zu Deiner Idee mit VK_A usw.
Schau mal in der Hilfe unter "Virtuelle Tastencodes".
Dort wird ausdrücklich darauf hingewiesen, dass solche "normalen" Tasten nicht als virtuelle Tastencodes angelegt wurden. (A bis Z und die Ziffern)
Kann man natürlich machen, womit dann, Vorteil, auch die Unterscheidungsprobleme zwischen A und a wegfallen (vorausgesetzt man legt die Konstanten richtig an ;-)).

Übrigens kannst Du das Ergebnis von IntToHex durchaus als Zahl übergeben, wenn Du ein '$' davorsetzt, also '$'+IntToHex(...) schreibst.

[EDIT]Schon wieder zu spät. Zweimal im gleichen Thread :cry: :mrgreen: [/EDIT]

S - tefano 19. Dez 2002 13:25

Hi,

jo stimmt, hattest recht. (so @ C.Seehase und Chewie)
Hm, aber ich weiß genau dass ich mir sone Liste angelegt hab...
Komisch.
Naja, also theomega, wenns so wie dus z.Zt. machst nich klappt, kannstes ja mal mit soner Liste versuchen.
Bei mir hats jedenfalls geklappt...
:witch:

Werd mich am Wochenende und in den Ferien mal damit beschäftigen, so als Nebenprojekt zu meinem anderen Prog, dass hoffentlich laufen wird.

Bis dann,

S - tefano

Werner 20. Dez 2002 22:36

Hallo,

ich stand kürzlich vor einem ähnlichen Problem.
Eine Lösung findest Du bei Andreas Blenk

www.blenk-software.de

unter:
Delphi-Tipps
Komponenten/Oberfläche/Anwendung/Strings
Wie kann ich einen simulierten Tastendruck an eine Komponente senden?

Das funktioniert ausgezeichnet. Für das kleine r musst Du
entweder die Dezimalzahl 82 einsetzen oder ord('R').

Für das grosse R musst Du als zweite Taste (Key2) VK_Shift
einsetzen.

Falls Du nicht auf der Tastatur vohandene Zeichen (ALT+.....)
durch Drücken der Funktionstasten erzeugen willst (zB ñ, das war mein
Problem), melde Dich bitte per eMail bei mir.

Werner

hm988 23. Dez 2002 21:40

hi,

hab da ein bisl anderes Problem, dachte ich frag mal vielleicht kann mir ja jemand helfen :oops:

Habe auf meinem Keyboard eine Umschalttaste für Funktionstasten (doppelte Belegung) wie kann ich die aktiviren deaktivieren ??
Beziehungsweise Standartmäsig aktivieren ?
Microsoft Multimedia Keyboard :freak:

gruß Steven

Luckie 23. Dez 2002 22:13

Zitat:

Zitat von Werner
Falls Du nicht auf der Tastatur vohandene Zeichen (ALT+.....)
durch Drücken der Funktionstasten erzeugen willst (zB ñ, das war mein
Problem), melde Dich bitte per eMail bei mir.

Wieso per E-Mail? Wir anderen hier im Forum wollen auch was davon haben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:52 Uhr.
Seite 1 von 3  1 23      

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