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 keybd_event + Vereinfachung (https://www.delphipraxis.net/90023-keybd_event-vereinfachung.html)

bluescreen25 10. Apr 2007 16:03


keybd_event + Vereinfachung
 
Hallo, lässt sich das noch vereinfachen ? Ich möchte gerne die Caption vom Label welche schon das Zeichen ist, direkt einsetzen, jedoch StringToChar oder Ähnliches habe ich nicht gefunden.
So müsste ich alle Zeichen einzeln auflisten, obwohl diese schon in der Caption stecken.

Delphi-Quellcode:
if TLabel(Sender).caption = 'A' then
   begin
     windows.keybd_event(ord('A'), 0, 0, 0);//Beispiel // Simuliere down
     keybd_event(ord('A'), 0, KEYEVENTF_KEYUP, 0);     // Simuliere up
   end;
MfG bluescreen25

Gruber_Hans_12345 10. Apr 2007 16:16

Re: keybd_event + Vereinfachung
 
meinste sowas ?
Delphi-Quellcode:
     windows.keybd_event(ord(TLabel(Sender).caption[1]), 0, 0, 0);//Beispiel // Simuliere down
     keybd_event(ord(TLabel(Sender).caption[1]), 0, KEYEVENTF_KEYUP, 0);     // Simuliere up

bluescreen25 10. Apr 2007 16:20

Re: keybd_event + Vereinfachung
 
Zitat:

Zitat von Gruber_Hans_12345
meinste sowas ?
Delphi-Quellcode:
     windows.keybd_event(ord(TLabel(Sender).caption[1]), 0, 0, 0);//Beispiel // Simuliere down
     keybd_event(ord(TLabel(Sender).caption[1]), 0, KEYEVENTF_KEYUP, 0);     // Simuliere up

Sagenhaft, Danke das wars :thumb:

Kannste mir das [1] erklären, damit ich auch verstehe, warum diese Konstellation funktioniet?

Gruß,bluescreen25

Gruber_Hans_12345 10. Apr 2007 16:37

Re: keybd_event + Vereinfachung
 
mit [1] greifst du auf das erste zeichen im string zu, mit [2] auf das zweite usw.

aufpassen mußt du, das du nicht zu weit gehst, den dann bekommst du einen fehler

mit
Delphi-Quellcode:
text := TLabel(Sender).Caption;
for i:=1 to length(text) do begin
    keybd_event(ord(text[i]), 0, 0, 0);//Beispiel // Simuliere down
    keybd_event(ord(text[i]), 0, KEYEVENTF_KEYUP, 0);     // Simuliere up
end;
kannst du per schleife auf alle chars des strings zugreifen

bitsetter 10. Apr 2007 17:32

Re: keybd_event + Vereinfachung
 
Hallo,

eventuell ist diese Procedure aus der Code-Lib noch ganz interessant für dich.
keybd_event

Robert Marquardt 10. Apr 2007 17:47

Re: keybd_event + Vereinfachung
 
Die Basisidee taugt nicht viel, da sie darauf basiert das der ASCII-Code und der virtuelle Keycode uebereinstimmen. Das stimmt allerdings nicht fuer alle moeglichen Tasten. Setz doch den Tag der Labels. Im Tag steht ein Index in ein Array das die virtuellen Tastencodes enthaelt.

bluescreen25 10. Apr 2007 21:01

Re: keybd_event + Vereinfachung
 
Zitat:

Zitat von Robert Marquardt
Die Basisidee taugt nicht viel, da sie darauf basiert das der ASCII-Code und der virtuelle Keycode uebereinstimmen. Das stimmt allerdings nicht fuer alle moeglichen Tasten. Setz doch den Tag der Labels. Im Tag steht ein Index in ein Array das die virtuellen Tastencodes enthaelt.

so ähnlich habe ich es auch gemacht, nur nicht über den Tag, sondern über Helpkeyword und der eigendlichen Caption ,welche ich über ne Ini einlese...

Ich stll das ganze nacher mal vor..

Gruß bluescreen25


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