| 用于function中
const SCROLLLOCK = 1; NUMLOCK = 2; CAPSLOCK = 4;
var Status: Byte; PntK: ^Byte; begin PntK := Ptr($40, $97); {directly point in memory} Status := Byte(PntK^); {read the status} if (NUMLOCK and Status) = NUMLOCK then {if NUM LOCK is on} Status := Status and (255 - NUMLOCK) {turn it off} else Status := Status or 2; {turn it on} Pntk^ := Status; {poke in memory (don't works)} end;
A: I use this procedures to turn on the caps lock if it isn't already on when the user enters my DBloockup combo. This gets rid of the nasty problem of case-sensitive indexes.
procedure TMainForm.StudentLookupEnter(Sender: TObject); Var Level : Integer; KeyState : TKeyBoardState; begin {check if caps-lock is on - if not turn it on} Level := GetKeyState(VK_CAPITAL); GetKeyboardState(KeyState); CapsLockStatus := KeyState; If Level = 0 then begin KeyState[VK_CAPITAL] := 1; setKeyboardState(KeyState); end; end; |