AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Kontrollieren der CAPS-Lock Taste

Ein Thema von TPok · begonnen am 24. Aug 2004 · letzter Beitrag vom 25. Aug 2004
Antwort Antwort
TPok

Registriert seit: 19. Jul 2004
Ort: Eisenach
25 Beiträge
 
Delphi 2005 Professional
 
#1

Kontrollieren der CAPS-Lock Taste

  Alt 24. Aug 2004, 11:54
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:
...
  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;
Mein Problem ist Verhalten 2. Ich habe schon etwas mit dem KeyPreview des Formulars experimentiert. Aber das brachte mich nicht zum Erfolg.
Für Vorschläge wäre ich dankbar.

Gruß,
Stephan
Stephan Fietzek
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2

Re: Kontrollieren der CAPS-Lock Taste

  Alt 24. Aug 2004, 12:23
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;
Thomas
  Mit Zitat antworten Zitat
TPok

Registriert seit: 19. Jul 2004
Ort: Eisenach
25 Beiträge
 
Delphi 2005 Professional
 
#3

Re: Kontrollieren der CAPS-Lock Taste

  Alt 24. Aug 2004, 23:50
Hehe. Danke. Manchmal ist das naheliegendste doch das Beste.

Gruß,
TPok
Stephan Fietzek
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Kontrollieren der CAPS-Lock Taste

  Alt 24. Aug 2004, 23:54
Ich würde da gar nichts machen. Die Benutzer werden es schon lernen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#5

Re: Kontrollieren der CAPS-Lock Taste

  Alt 25. Aug 2004, 00:33
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.
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Kontrollieren der CAPS-Lock Taste

  Alt 25. Aug 2004, 00:36
Also wenn sie bei anderen Programmen normal reagiert, wäre es akzeptabel.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#7

Re: Kontrollieren der CAPS-Lock Taste

  Alt 25. Aug 2004, 00:50
jenachdem wobei die capslockung behindert, wäre es vielleicht eine sehr schöne möglichkeit, einfach dort einzugreifen, und das capslock "wegrechnen"
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#8

Re: Kontrollieren der CAPS-Lock Taste

  Alt 25. Aug 2004, 05:45
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".
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:25 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