![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с определением нажат ли Shift в Windows 98
Gigant © (2003-12-26 01:14:00)
У меня есть две функции, одна из которых определяет прижат ли shift в данный момент, а другая включён ли CapsLock.
function IsShiftPressed : Boolean;
begin
Result:=0<>(GetKeyState(VK_SHIFT) and 128);
end;
function IsCapsLockOn : Boolean;
begin
Result:=0<>(GetKeyState(VK_CAPITAL) and $01);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if IsShiftPressed then label1.caption:="shift"
else label1.caption:="not shift";
if IsCapsLockOn then label2.caption:="caps"
else label2.caption:="not caps";
end;
В Windows ХР они работаеют нормально, но в 98 если моё приложение активно, то тоже всё нормально, а если моё приложение не активно и я нажимаю шифт (включаю капс лок) в другом приложении, то эти функции не реагируют. С чем это связано и как от этого избавиться?
Gigant (2003-12-26 15:50:00) [1]
Всё ясно, спасибо, вот ведь фигня!
tesseract (2003-12-26 09:52:00) [2]
всё правильно в 2000/XP программа не уничтожает сообщения клавиатурные адресованные другой программе а WIN98 это благополучно делает, выход - пиши хук пропускающий через себя всё, и выбирай, что нужно