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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2014, 18:49   #1
klon_008
 
Регистрация: 21.11.2014
Сообщений: 3
Вопрос Имитация нажатия TShortCut

подскажите как симитировать нажатие сочетания клавиш заданных юзером в THotKey? С нажатием клавиши все просто. Вошел в ступор на Modifiers.. .
klon_008 вне форума Ответить с цитированием
Старый 21.11.2014, 19:24   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

код давай, где попытка имитации.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 22.11.2014, 03:19   #3
kropotkina-alice
Форумчанин
 
Аватар для kropotkina-alice
 
Регистрация: 27.10.2014
Сообщений: 594
По умолчанию

Цитата:
Сообщение от klon_008 Посмотреть сообщение
подскажите как симитировать нажатие сочетания клавиш заданных юзером в THotKey?
Например, имитируем нажатие ALT+A:
Код:
keybd_event(vk_menu, 0, 0, 0);
keybd_event($41, 0, 0, 0);
keybd_event(vk_menu, 0, KEYEVENTF_KEYUP, 0);
keybd_event($41, 0, KEYEVENTF_KEYUP, 0);
kropotkina-alice вне форума Ответить с цитированием
Старый 22.11.2014, 09:57   #4
klon_008
 
Регистрация: 21.11.2014
Сообщений: 3
По умолчанию

Цитата:
Сообщение от kropotkina-alice Посмотреть сообщение
Например, имитируем нажатие ALT+A:
Код:
keybd_event(vk_menu, 0, 0, 0);
keybd_event($41, 0, 0, 0);
keybd_event(vk_menu, 0, KEYEVENTF_KEYUP, 0);
keybd_event($41, 0, KEYEVENTF_KEYUP, 0);
все верно, но как мне из компонента THotKey вытащить то что в нем есть vk_menu
klon_008 вне форума Ответить с цитированием
Старый 22.11.2014, 10:29   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
var key:TShortCut;
...
Key:=HotKey1.HotKey;
А Key это set типа Word, так что потом его и подставляй.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.11.2014, 10:41   #6
klon_008
 
Регистрация: 21.11.2014
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
var key:TShortCut;
...
Key:=HotKey1.HotKey;
А Key это set типа Word, так что потом его и подставляй.
Да. я это понимаю, но вот модификаторы от HotKey не применяются.

Например: в компоненте я задал сочетание клавиш (Shift+1) - по идее должен подставиться символ "!"...

При нажатии на кливишу "0" должно считаться комбинация из THotKey и воспроизвестись.

Если я подставляю HotKey1.HotKey то имитируется нажатие только "1" без Модификатора Shift.

Сейчас подразобрался малех, но возникла другая маленько проблема...

Код:
procedure ShortCutToVirtualKey(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_MENU;
  if (ssCtrl in Shift) then
  Modifiers := Modifiers or VK_CONTROL;
end;

procedure retry(HotKey:THotKey);
var
  Key : Word;
  Modifiers: UINT;
  Keys: TShiftState;
  I: integer;
begin
  ShortCutToVirtualKey(HotKey.HotKey, Key, Modifiers);
  keybd_event(Modifiers, 0,0,0);
  keybd_event(HotKey.HotKey, 0,0,0);
  keybd_event(HotKey.HotKey, 0,KEYEVENTF_KEYUP,0);
  keybd_event(Modifiers, 0,KEYEVENTF_KEYUP,0);
end;
теперь т.к. Shift - множество то Модификаторы теряют последовательность...
Ctrl+Shift+A имитирует теперь Shift+Ctrl+A
klon_008 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Имитация нажатия клавиши xaero93 Помощь студентам 5 25.11.2012 15:06
Имитация нажатия клавиш xaero93 Помощь студентам 5 28.10.2012 16:40
имитация нажатия клавиши megostudent Общие вопросы Delphi 7 25.09.2011 10:47
Имитация нажатия клавиш Air Свободное общение 28 04.02.2010 12:38
Имитация нажатия на f1 ma000123 Общие вопросы C/C++ 4 02.02.2010 19:17