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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.08.2013, 23:08   #1
igrok111
Форумчанин
 
Регистрация: 12.07.2012
Сообщений: 140
По умолчанию Управление клавиатурой

Как сделать такое? Программа должна проверить - если зажата клавиша Esc - то нужно циклично нажимать Enter. Только не форме программы, программа свернута, она должна просто эмулировать нажатие клавиши ентер типо много раз подряд, но только в случае если зажат Esc

upd наверно нужно проверять по таймеру условие - if зажат ecc то чтото делать. Меня большле интересует будет ли это работать, если прога свернута, или нужно типо ставить хуки в функциях?

Последний раз редактировалось igrok111; 07.08.2013 в 23:12.
igrok111 вне форума Ответить с цитированием
Старый 08.08.2013, 00:34   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Меня большле интересует будет ли это работать, если прога свернута, или нужно типо ставить хуки в функциях?
Не будет работать если свернута.

Установка хука работает везде, в отличии от таймеров.
Человек_Борща вне форума Ответить с цитированием
Старый 08.08.2013, 04:28   #3
Larboss
Недо
Участник клуба
 
Регистрация: 11.08.2011
Сообщений: 1,394
По умолчанию

Код:
procedure SimulateKeyDown(Key: byte);
begin
  keybd_event(Key, MapVirtualKey(Key, 0), 0, 0);
end;

procedure SimulateKeyUp(Key: byte);
begin
  keybd_event(Key, MapVirtualKey(Key, 0), KEYEVENTF_KEYUP, 0);
end;

В таймере:
 if (GetAsyncKeyState(VK_Escape) <> 0) then // VK_ESCAPE - тут поставить код Esc
  begin  
    SimulateKeyDown(VK_ENTER);
    Sleep(100);
    SimulateKeyUP(VK_ENTER);
  end;
Как пример привел. Если свернута, то будет работать. Сворачивание не приводит к остановке таймера, если программист не указал это делать. Даже если у приложения скрыть форму.
С помощью программирования можно разбогатеть и изменить мир к лучшему (с) Бьерн Страуструп
Larboss вне форума Ответить с цитированием
Старый 08.08.2013, 05:01   #4
igrok111
Форумчанин
 
Регистрация: 12.07.2012
Сообщений: 140
По умолчанию

Цитата:
Сообщение от Larboss Посмотреть сообщение
Код:
procedure SimulateKeyDown(Key: byte);
begin
  keybd_event(Key, MapVirtualKey(Key, 0), 0, 0);
end;

procedure SimulateKeyUp(Key: byte);
begin
  keybd_event(Key, MapVirtualKey(Key, 0), KEYEVENTF_KEYUP, 0);
end;

В таймере:
 if (GetAsyncKeyState(VK_Escape) <> 0) then // VK_ESCAPE - тут поставить код Esc
  begin  
    SimulateKeyDown(VK_ENTER);
    Sleep(100);
    SimulateKeyUP(VK_ENTER);
  end;
Как пример привел. Если свернута, то будет работать. Сворачивание не приводит к остановке таймера, если программист не указал это делать. Даже если у приложения скрыть форму.
вот щас парюсь со значением interval у таймера и sleep. к примеру sleep 300 а если таймер всего 10. таймер выполняется но событие в нем не успеет выполнится до следущего выполнения таймера. точно такие же проблеммы если слип меньше чем таймер
хотя просто сложно этот момент настроить, но можно)

upd: спасибо, это я мудрю что-то наноч глядя, вроде получается нормально

Последний раз редактировалось igrok111; 08.08.2013 в 05:16.
igrok111 вне форума Ответить с цитированием
Старый 08.08.2013, 13:31   #5
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,876
По умолчанию

Цитата:
таймер выполняется но событие в нем не успеет выполнится до следущего выполнения таймера
Код:
В таймере:
 if (GetAsyncKeyState(VK_Escape) <> 0) then // VK_ESCAPE - тут поставить код Esc
  begin  
    Timer1.Enabled:=False;
    SimulateKeyDown(VK_ENTER);
    Sleep(100);
    SimulateKeyUP(VK_ENTER);
    Timer1.Enabled:=True;
  end;
northener вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаленное управление клавиатурой (Delphi 7) Rust.am Помощь студентам 3 27.02.2012 01:16
Управление клавиатурой NickolayNest Паскаль, Turbo Pascal, PascalABC.NET 0 26.10.2011 00:35
Вывод конфигурации компьютера и управление клавиатурой, компилятор gcc Enchance Общие вопросы C/C++ 0 04.11.2010 21:26
Управление клавиатурой kaizer Gamedev - cоздание игр: Unity, OpenGL, DirectX 3 10.12.2009 18:40
обновление в блоге - Управление клавиатурой Pblog Обсуждение статей 0 27.05.2007 03:17