![]() |
Kontrollieren der CAPS-Lock Taste
Hallo,
ich schreibe gerade ein Programm, welches seine Eingaben per Barcode-Scanner erhält. Da die Benutzer des Rechners aber (teilweise unbeabsichtigt) die CAPS-Lock Taste bedienen, habe ich mir folgendes Verhalten ausgedacht: 1. Wenn die Applikation aktiviert wird, merkt sie sich den Status der CAPS-Taste und deaktiviert sie. Wenn die Applikation deaktiviert wird, stellt sie den Status der Taste wieder her. 2. Während die Applikation aktiviert ist, wird die CAPS-Taste abgefangen und beleibt wirkungslos. Verhalten 1 habe ich mit folgendem Code realisiert:
Delphi-Quellcode:
Mein Problem ist Verhalten 2. Ich habe schon etwas mit dem KeyPreview des Formulars experimentiert. Aber das brachte mich nicht zum Erfolg.
...
private { Private-Deklarationen } CapsState: Boolean; procedure AppActivate(Sender: TObject); procedure AppDeActivate(Sender: TObject); ... procedure SetCapsLock(Active: Boolean); var Scan: UINT; State: SHORT; begin Scan := MapVirtualKey(VK_CAPITAL, 0); State := GetKeyState(VK_CAPITAL); if Active xor (State and $0001 = $0001) then begin keybd_event(VK_CAPITAL, Scan, 0, 0); keybd_event(VK_CAPITAL, Scan, KEYEVENTF_KEYUP, 0); end; end; procedure TForm1.AppActivate(Sender: TObject); begin CapsState := (GetKeyState(VK_CAPITAL) and $0001 = $0001); SetCapsLock(false); end; procedure TForm1.AppDeActivate(Sender: TObject); begin SetCapsLock(CapsState); end; procedure TForm1.FormCreate(Sender: TObject); begin Application.OnActivate := AppActivate; Application.OnDeActivate := AppDeActivate; end; Für Vorschläge wäre ich dankbar. Gruß, Stephan |
Re: Kontrollieren der CAPS-Lock Taste
Bei mir funktioniert das (ist zwar nicht so schön, da Caps Lock kurz aufblinkt)
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); begin if Key = VK_CAPITAL then begin SetCapsLock(False); end; end; |
Re: Kontrollieren der CAPS-Lock Taste
Hehe. Danke. Manchmal ist das naheliegendste doch das Beste.
Gruß, TPok |
Re: Kontrollieren der CAPS-Lock Taste
Ich würde da gar nichts machen. Die Benutzer werden es schon lernen.
|
Re: Kontrollieren der CAPS-Lock Taste
naja. manchmal muss es schnell gehen, und ein versehentliches capslocken könnte mehr oder weniger fatal sein.
ich hasse zwar programme, die so sachen wie alt-tab win-m win-d strg-alt-entf strg-escape windowstaste o.ä. verhindern, aber das muss jeder programmierer selbst wissen. notfalls optional einbauen. |
Re: Kontrollieren der CAPS-Lock Taste
Also wenn sie bei anderen Programmen normal reagiert, wäre es akzeptabel.
|
Re: Kontrollieren der CAPS-Lock Taste
jenachdem wobei die capslockung behindert, wäre es vielleicht eine sehr schöne möglichkeit, einfach dort einzugreifen, und das capslock "wegrechnen"
|
Re: Kontrollieren der CAPS-Lock Taste
Das Problem ist das CapsLock ausserhalb des Programms bearbeitet wird bevor die Message das Programm erreicht.
Die Message ist also nur die Nachricht das jemand die Taste gedrueckt hat, aber nicht die Nachricht ueber den Zustand "CapsLock". |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:09 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