Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi textausgabe (https://www.delphipraxis.net/46716-textausgabe.html)

Thorondor 30. Mai 2005 13:31


textausgabe
 
Hallo.

Ich hab mal ne frage bezüglich der textausgabe bei delphi 7.
ich arbeite momentan an einem Programm. folgenden schritt des programms bekomme ich momentan nicht hin:
ich starte das programm, gehe dann beispielsweise auf ein word-dokument. das programm soll nun einfach ein wort, dass ich im quelltext definiert habe, schreiben.
ich habe dazu bis jetzt folgenden code genutzt:

Delphi-Quellcode:
keybd_event(Ord('bad'), 1,0,0);
das wort "bad" soll dabei nur ein beispiel sein.
wenn ich diesen code verwende, schreibt es aber "214" anstatt "bad". :cry:

Woran kann das liegen bzw. gibt es andere Codes, die da eher angebracht sind?

Danke! :)

[edit=alcaeus]Delphi-Tags korrigiert. Mfg, alcaeus[/edit]

gordon freeman 30. Mai 2005 13:37

Re: textausgabe
 
Ord() gibt dir den Asci-Code der zwischen den Klammern stehenden Zeichen.
Versuchs mal mit:
Delphi-Quellcode:
keybd_event('bad', 1,0,0);

idontwantaname 30. Mai 2005 13:40

Re: textausgabe
 
schon wieder wer schneller .... diesmal ist das rote Kasterl sogar gekommen :mrgreen:
Egal, das wollte ich schon immer mal sagen:

:party: Herzlich Willkommen in der DP :party:



PS: für Delphi-Quellcodes gibt es hier Delphi-Tags
Code:
[delphi]mein-delphi-code[/delphi]

shmia 30. Mai 2005 13:46

Re: textausgabe
 
Du musst für jeden einzelnen Buchstaben die Funktion keybd_event aufrufen.
Genau genommen für jeden Buchstaben 2mal: Taste drücken gefolgt von Taste loslassen.
Da dies sehr mühsam ist, gibt es die Unit SndKey32 im Internet, die diese Aufgabe stark vereinfacht:
Bei Google suchensndkey32 delphi

Thorondor 30. Mai 2005 13:56

Re: textausgabe
 
naja, mag ja gut und schön sein, aber wenn ich den buchstaben 'a' ausgeben lassen will und das wie oben schreibe (als einzelnen buchstaben) gibt das eine '1' anstatt 'a' aus. analog dazu dann 2 für b, 3 für c usw.. wie kann man das umgehen/ändern?!

shmia 30. Mai 2005 14:24

Re: textausgabe
 
Zitat:

Zitat von Thorondor
naja, mag ja gut und schön sein, aber wenn ich den buchstaben 'a' ausgeben lassen will und das wie oben schreibe (als einzelnen buchstaben) gibt das eine '1' anstatt 'a' aus. analog dazu dann 2 für b, 3 für c usw.. wie kann man das umgehen/ändern?!

Die Funktion keybd_event möchte als Argument nicht den Ansicode sondern den Virtual Keycode haben.
Der Ansicode von Buchstabe 'a' ist 97 dezimal.
Kuckst du in der Unit Windows.pas und findest dort:
Delphi-Quellcode:
VK_NUMPAD1 = 97;
Also entspricht 97 dem Tastendruck auf die "1" im Nummernblock.
In der Unit windows.pas findest du alle virtual keycodes. (einfach nach VK_LBUTTON suchen)
Es gibt für jede Taste auf der Tastatur einen virtual keycode.
Da es ca. 103 Tasten sind gibt es grob gesagt auch ebensoviele virt. keycodes.
Ob jetzt ein Klein- oder ein Grossbuchstabe gedrückt wird, hängt vom Shiftstatus ab.
Für ein grosses A musst du also:
SHIFT drücken, Taste a drücken, Taste a loslassen, SHIFT loslassen.

Aber wie gesagt: nimm die Unit SndKey32 und du brauchst dir darüber keine Gedanken machen.

gordon freeman 30. Mai 2005 17:11

Re: textausgabe
 
Hier ist die Liste der virtuellen Tastencodes aus der Code-Library. Wenn du willst kannste ja auch damit dein keybd_event ansteuern.

mfg, gordon


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