Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.04.2009, 12:05   #1
buka_14
 
Регистрация: 09.04.2009
Сообщений: 8
По умолчанию почему не работает процедура нажатия клавиши в делфи

есть процедура

Код:
procedure TForm1.Button1Click(Sender: TObject);
Var
KeyState: TKeyboardState; 
begin
GetKeyboardState(KeyState); 
if (KeyState[VK_NUMLOCK] = 0) then 
KeyState[VK_NUMLOCK] := 1 
else
KeyState[VK_NUMLOCK] := 0; 
SetKeyboardState(KeyState); 
end;
запускаю форму, нажимаю кнопку не реагирует никак.
Что-то делаю не правильно? Как сделать, чтобы работало включение/выключение нумлока?

Последний раз редактировалось Stilet; 16.04.2009 в 12:30.
buka_14 вне форума Ответить с цитированием
Старый 16.04.2009, 12:26   #2
VVM
Форумчанин
 
Аватар для VVM
 
Регистрация: 06.06.2007
Сообщений: 282
По умолчанию

Вкл и откл одной кнопкой
Код:
 procedure TForm1.Button1Click(Sender: TObject);
begin
  keybd_event(VK_NUMLOCK, $45, (KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP), 0);
  keybd_event(VK_NUMLOCK, $45, (KEYEVENTF_EXTENDEDKEY or 0), 0)
end;
Не важно, как часто вы падаете. Важно, как часто вы поднимаетесь. Винс Ломбарди.
VVM вне форума Ответить с цитированием
Старый 16.04.2009, 14:40   #3
buka_14
 
Регистрация: 09.04.2009
Сообщений: 8
По умолчанию

как сделать, чтобы эта процедура заработала правильно?
чтобы при нажатии на -> переключались лампочки поочереди

i
Код:
f key=VK_Right then
begin
if  (HiWord(GetKeyState(vk_NUMLOCK)) = 0) then
    if (HiWord(GetKeyState(vk_capital)) = 0) then
       if( HiWord(GetKeyState(vk_scroll)) = 0) then
       keybd_event(VK_NUMLOCK, $45, (KEYEVENTF_EXTENDEDKEY or 0), 0) 
       else BEGIN
       keybd_event(VK_NUMLOCK, $45, (KEYEVENTF_EXTENDEDKEY or 0), 0); 
       keybd_event(VK_SCROLL, $45, (KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP), 0);
       END
    ELSE begin
     keybd_event(VK_capital, $45, (KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP), 0
     keybd_event(VK_scroll, $45, (KEYEVENTF_EXTENDEDKEY or 0), 0); 
    end
else begin
keybd_event(VK_numlock, $45, (KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP), 0
keybd_event(VK_capital, $45, (KEYEVENTF_EXTENDEDKEY or 0), 0); 
end;

Последний раз редактировалось Stilet; 16.04.2009 в 14:48.
buka_14 вне форума Ответить с цитированием
Старый 16.04.2009, 17:26   #4
buka_14
 
Регистрация: 09.04.2009
Сообщений: 8
По умолчанию

Спасиба вам большое за помощь
buka_14 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TPopMenu, TMenuItem и процедура обработки нажатия Denager Общие вопросы Delphi 8 04.07.2008 21:32
Опредиление времени нажатия клавиши Antonio86 Общие вопросы Delphi 1 29.04.2008 20:48
Емулиривание нажатия клавиши xTANATOSx Win Api 9 10.10.2007 21:46
Эмуляция нажатия клавиши при отметке Checkbox delphi_beginner Win Api 3 02.06.2007 10:07
Эмуляция нажатия клавиши...... Zoidberg Win Api 4 11.01.2007 18:44