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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2014, 09:21   #1
Hemnt
Новичок
Джуниор
 
Регистрация: 18.05.2014
Сообщений: 3
Восклицание Нажать клавиши из ThotKey

Здравствуйте! Облазил интернет, так и не нашел ответа на свой вопрос: как считать сочетание клавиш из ThotKey, а потом нажать их? Словить эти клавиши должна полноэкранная игра. Смысл программы таков: глобально регистрируем 2 клавиши "старт" и "стоп" цикличного нажатия определенного сочетания клавиш. Из ThotKey в registerhotkey нормально всё, а вот как из Thotkey преобразовать сочетание клавиш для последующего его программного нажатия?

Куски кода ниже, пытался на блокноте тестировать: нажимаются сочетания, но совсем не те, например: нужно ctrl+f, нажимается ctrl+g
Код:
// Transform TShortCut to use for RegisterHotKey
// TShortCut fьr RegisterHotKey umwandeln
procedure ShortCutToHotKey(HotKey: TShortCut; var Key : Word; var Modifiers: Uint);
var
  Shift: TShiftState;
begin
  ShortCutToKey(HotKey, Key, Shift);
  Modifiers := 0;
  if (ssShift in Shift) then
  Modifiers := Modifiers or VK_SHIFT;
  if (ssAlt in Shift) then
  Modifiers := Modifiers or VK_ALT;
  if (ssCtrl in Shift) then
  Modifiers := Modifiers or VK_CONTROL;
end;
Вот само нажатие:
Код:
       keybd_event(Modifiers, 0, 0, 0);
       keybd_event(Key, 0, 0, 0);
       keybd_event(Key, 0, KEYEVENTF_KEYUP, 0);
       keybd_event(Modifiers, 0, KEYEVENTF_KEYUP, 0);
Hemnt вне форума Ответить с цитированием
Старый 18.05.2014, 09:35   #2
Hemnt
Новичок
Джуниор
 
Регистрация: 18.05.2014
Сообщений: 3
По умолчанию

В первой цитате в оригинальном коде для регистерхоткея VK_SHIFT, VK_ALT и VK_CONTROL необходимо VK заменить на MOD. Однако с VK хоть как-то работает keybd_event.
Hemnt вне форума Ответить с цитированием
Старый 19.05.2014, 02:30   #3
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,882
По умолчанию

Цитата:
Облазил интернет, так и не нашел ответа на свой вопрос: как считать сочетание клавиш из ThotKey
Логично. Я бы (как и Интернет) не смог бы ответить на этот вопрос.
Попробуй его объяснить. Только не кусками невесть откуда взятого кода, а своими словами.
northener вне форума Ответить с цитированием
Старый 19.05.2014, 11:29   #4
Hemnt
Новичок
Джуниор
 
Регистрация: 18.05.2014
Сообщений: 3
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
Логично. Я бы (как и Интернет) не смог бы ответить на этот вопрос.
Попробуй его объяснить. Только не кусками невесть откуда взятого кода, а своими словами.
В начале, как мне кажется, я всё подробно рассказал, ну ладно: есть программа, которая регистрирует 2 клавиши активации и деактивации таймера, в таймере же должно программно нажаться сочетание клавиш, которые должна подхватить игра (полноэкранное приложение). Желая создать программу с "человеческим лицом", с помощью ThotKey можно будет настроить эти 3 сочетания клавиш (активация, деактивация и то, что будет нажиматься в таймере). С регистрацией горячих клавиш в системе проблем не возникло - всё прекрасно работает, но проблема заключается именно с нажатием сочетания клавиш из ThotKey. Т.е. нужно как-то трансформировать код сочетания клавиш (hotkey1.hotkey) на модификаторы и клавишу, которые впоследствии надо программно нажать. Думаю, теперь поставленная задача более ясна.

И да, полноэкранное приложение - это не окно (вроде как С: ), да и определенному окну отправлять сочетание клавиш (из таймера) кажется не очень. Как отправить их полностью системе? Вопрос наверно глупый, ответ же я жду на абзац выше.
Hemnt вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определение клавиши в компоненте THotKey Merano Общие вопросы Delphi 1 13.12.2012 21:54
Нажать кнопку scroyler Работа с сетью в Delphi 0 05.11.2012 11:40
Связать THotKey и глобальные клавиши, как? Человек_Борща Общие вопросы Delphi 3 05.10.2012 20:11
Проблема с THotKey в Delphi 2010 Altera Компоненты Delphi 8 06.01.2010 09:51
Нажать кнопку Dron_kss Работа с сетью в Delphi 1 28.03.2009 17:33