怎样控制caps lock键
rgn 2009-05-24 04:57:09 在数据输入的时候,有edit1,edit2,edit3,datetimepicker1,button1,我想焦点在edit1时程序自动按下caps lock键,焦点在其它控件时取消按下,怎么办?
keybd_event( VK_CAPITAL,$45,KEYEVENTF_EXTENDEDKEY or 0, 0 );
keybd_event( VK_CAPITAL,$45,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
这两句就是简单的按下和取消caps lock键,但是这两句和如何判断焦点在哪个控件上结合起来呢?
(以下的程序第一个在edit1的输入总不能大写,以及离开edit1后不正常甚至死循环)
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
keystates:TKeyboardState;
begin
getkeyboardstate(keystates);
if (form1.ActiveControl.Name='Edit1')and odd(keystates[vk_CAPITAL])=false then
begin
keybd_event( VK_CAPITAL,$45,KEYEVENTF_EXTENDEDKEY or 0, 0 );
keybd_event( VK_CAPITAL,$45,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
end;
if (form1.ActiveControl.Name<>'Edit1')and odd(keystates[vk_CAPITAL]) then
begin
keybd_event( VK_CAPITAL,$45,KEYEVENTF_EXTENDEDKEY or 0, 0 );
keybd_event( VK_CAPITAL,$45,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
end;
end;