Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 2 753

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!
Как можно программно зажать кнопку Shift на 10 секунд???
Пожалуйста помогите!!!

Некто Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Некто (статус: Заблокирован)
Вопрос отправлен: 9 мая 2009, 09:53
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Dron

Здравствуйте, Мусабаев Равиль!
Для глобального управления клавиатурой используется функция keybd_event(). Имитация нажатия клавиши делается следующим образом:

keybd_event(VK_LSHIFT, 0, 0, 0);
Важно не забыть "отпустить" клавишу:
keybd_event(VK_LSHIFT, 0, KEYEVENTF_KEYUP, 0);
Чтобы создать 10-секундную задержку, можно воспользоваться таймером (Interval = 10000, Enabled = False):
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  keybd_event(VK_LSHIFT, 0, KEYEVENTF_KEYUP, 0);
end;
А код включения соответственно такой:
keybd_event(VK_LSHIFT, 0, 0, 0);
Timer1.Enabled:=True;
Другой вариант - использовать функцию Sleep(), но в этом случае на заданное время программа "заморозится". В вашем случае, думаю, таймер - лучшее решение. Если нужен правый Shift, то код клавиши нужно заменить на VK_RSHIFT.
Удачи!

Ответ отправил: Dron (статус: Студент)
Время отправки: 9 мая 2009, 11:54


Мини-форум вопроса

Мини-форум пуст.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:45
Выполнено за 0.03 сек.