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 keyb_event schreibt kein ñ (https://www.delphipraxis.net/141006-keyb_event-schreibt-kein-%F1.html)

divBy0 30. Sep 2009 13:04


keyb_event schreibt kein ñ
 
Hallo,

ich wollte mir gerade was basteln um den Buchstaben 'ñ' per Mausklick griffbereit zu haben. Allerdings wird das Zeichen nicht mit keyb_event gesendet.

Delphi-Quellcode:
keybd_event(Ord('Ñ'), 0, 0, 0); // - geht nicht

keyb_event(Ord('ñ'), 0, 0, 0); // - geht nicht
Das muss aber doch mit keyb_event funktionieren die Ascii-Codes sind 0241 für ñ oder 0209 für Ñ.

Weiß jemand woran das liegt?

hathor 30. Sep 2009 13:44

Re: keyb_event schreibt kein ñ
 
Dann mach es so:

Klicke ins Edit1, tippe Strg+a
klicke ins Edit2, tippe Strg+b

Delphi-Quellcode:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   if (ssCtrl in Shift) and (Key = 65) then  //ctrl a
    SendMessage(Edit1.Handle, WM_CHAR, Ord(#0209), 1);
end;

procedure TForm1.Edit2KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   if (ssCtrl in Shift) and (Key = 66) then  //ctrl b
    SendMessage(Edit2.Handle, WM_CHAR, Ord(#0241), 1);
end;

SirThornberry 30. Sep 2009 14:22

Re: keyb_event schreibt kein ñ
 
Der Grund das dies nicht funktioniert ist relativ einfach.
keybd_event erwartet eine Taste und kein Zeichen (und für das von dir gewünschte Zeichen gibt es keine eigene Taste).
Will man ein Zeichen erzeugen welches die Verwendung mehrere Tasten zur Erzeugung benötigt (zum Beispiel Großbuchstaben) so muss man diese auch simulieren.
In der Codelib befindet sich dazu auch eine Funktion der man einfach eine Zeichenkette übergeben kann und diese ermittelt dann welche Tastendrücke dafür notwendig sind und simuliert alle benötigten Tastenaktionen mit keybd_event.

[Edit]
http://www.delphipraxis.net/internal...=562991#562991

divBy0 30. Sep 2009 14:41

Re: keyb_event schreibt kein ñ
 
Die Taste gibts schon, allerdings auf einer spanischen Tastatur.

Dann müsste ich also die Tasten alle einzeln übergeben ALT + 0 + 2 + 4 + 1.

himitsu 30. Sep 2009 14:43

Re: keyb_event schreibt kein ñ
 
Wenn man ein entsprechend kombinierendes Eingabeschema hätte, dann ginge auch ~+n

so wie ´+a = á


PS: daß es mit MSDN-Library durchsuchenkeybd_event nicht so geht, sollte eigentlich klar sein, denn dieses verlangt einen Scan-Code und keinen Char :warn:
> MSDN-Library durchsuchenMapVirtualKey

[edit] glatt SirThornberry übersehn :oops:

SirThornberry 30. Sep 2009 21:57

Re: keyb_event schreibt kein ñ
 
Zitat:

Zitat von divBy0
Die Taste gibts schon, allerdings auf einer spanischen Tastatur.

Dann müsste ich also die Tasten alle einzeln übergeben ALT + 0 + 2 + 4 + 1.

Wenn ein spanisches Tastaturlayout eingestellt ist würde die Funktion aus der Codelib dies auch berücksichtigen und entsprechend andere Tasten simulieren.


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