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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.03.2009, 13:35   #1
pix_l
Пользователь
 
Регистрация: 29.03.2009
Сообщений: 19
По умолчанию Нажатие комбинации клавиш

Как нажать комбинацию клавиш Ctrl+Alt+Shift+D? Может у кого готовый код завалялся.
pix_l вне форума Ответить с цитированием
Старый 30.03.2009, 13:44   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Програмно али ручками?
Можеш нормально ситуацию обрисовать?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.03.2009, 15:16   #3
Ntlegend
Форумчанин
 
Аватар для Ntlegend
 
Регистрация: 12.05.2007
Сообщений: 373
По умолчанию

Stilet, это форум прграмистов а не чат незнаю кого.. если незнаешь - лучше не пиши

pix_l, по данному вопросу есть много информацыи
вот вариант нажатия клавиши в окне с фокусом
Код:
//нажимаем клавишу
keybd_event(Key, 0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
//удерживаем клавишу
  keybd_event(Key, 0,KEYEVENTF_EXTENDEDKEY,0);
//отпускаем клавишу
  keybd_event(Key, 0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);

//Key - это код клавиши (смотри в модуле Windows константы VK_*)
нажатие комбинацыи клавишь по сути является нажатием и удерживаением нужних клавишь по очереди.. и когда будут все нажаты - то отпускаем их.. вот пример реализацыи твоего вопроса:
Код:
  keybd_event(VK_CONTROL, 0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
  keybd_event(VK_CONTROL, 0,KEYEVENTF_EXTENDEDKEY,0);
//нажали и удерживаем Ctrl
  keybd_event(VK_MENU, 0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
  keybd_event(VK_MENU, 0,KEYEVENTF_EXTENDEDKEY,0);
//нажали и удерживаем Alt
  keybd_event(VK_SHIFT, 0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
  keybd_event(VK_SHIFT, 0,KEYEVENTF_EXTENDEDKEY,0);
//нажали и удерживаем Shift
  keybd_event(ORD(D), 0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
  keybd_event(ORD(D), 0,KEYEVENTF_EXTENDEDKEY,0);
//и тока теперь нажимаем клавишу D
//клавиши-акселераторы желательно нажимать в первою очередь.. иначе приложение может не среагировать на данную комбинацыю
//а дальше от пускаем клавиши.. в любой последовательносте
  keybd_event(ORD(D), 0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
  keybd_event(VK_SHIFT, 0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
  keybd_event(VK_MENU, 0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
  keybd_event(VK_CONTROL, 0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
про другие методы програмного нажатия клавиши в чужом окне поищи в инете..
Перемен! - требуют наши сердца. Перемен! - требуют наши глаза.
В нашем смехе и в наших слезах, И в пульсации вен:
"Перемен!Мы ждем перемен!"
Ntlegend вне форума Ответить с цитированием
Старый 30.03.2009, 15:32   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Ntlegend
Ну вот ты думаеш что твой способ панацея?
А если автору нужно "послать" это нажатие в какое-то окно, но не активное?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.03.2009, 15:59   #5
Ntlegend
Форумчанин
 
Аватар для Ntlegend
 
Регистрация: 12.05.2007
Сообщений: 373
Радость

Stilet, открой глазки шире и прочитай:

Цитата:
Сообщение от Ntlegend Посмотреть сообщение
Stilet, это форум прграмистов а не чат незнаю кого.. если незнаешь - лучше не пиши
Цитата:
Сообщение от Ntlegend Посмотреть сообщение
вот вариант нажатия клавиши в окне с фокусом
***
про другие методы програмного нажатия клавиши в чужом окне поищи в инете..
если есть еще какието вопросы - то пиши лучше мне в личку.. не нада гадить на форуме
Перемен! - требуют наши сердца. Перемен! - требуют наши глаза.
В нашем смехе и в наших слезах, И в пульсации вен:
"Перемен!Мы ждем перемен!"
Ntlegend вне форума Ответить с цитированием
Старый 30.03.2009, 17:18   #6
pix_l
Пользователь
 
Регистрация: 29.03.2009
Сообщений: 19
По умолчанию

сорри за несколько неясно сформулированный вопрос - торопился. Имеем прогу с невидимой формой и длл. обработчик нажатия комбинации клавиш находится в невидимой форме (впрочем, именно потому, что там используется handle и пришлось делать форму, а так планировалось все уместить в app GUI). Комбинацию типа Ctrl+Key - без проблем работает, а вот с несколькими клавишами - труба.
ЗЫ: Нажатие клавишь не виртуальное - физическое. Главное обработчик поставить.
pix_l вне форума Ответить с цитированием
Старый 30.03.2009, 18:57   #7
Ntlegend
Форумчанин
 
Аватар для Ntlegend
 
Регистрация: 12.05.2007
Сообщений: 373
По умолчанию

эээмм... от теперь я точна немного запутался в поставленой задаче )

Цитата:
впрочем, именно потому, что там используется handle и пришлось делать форму
вместо хендла пиши 0..

Цитата:
Нажатие клавишь не виртуальное - физическое
а в чом, собственно говоря, разница??
Перемен! - требуют наши сердца. Перемен! - требуют наши глаза.
В нашем смехе и в наших слезах, И в пульсации вен:
"Перемен!Мы ждем перемен!"
Ntlegend вне форума Ответить с цитированием
Старый 31.03.2009, 10:12   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
pix_l
Подозреваю что обработчик нажатия как HotKey реализован.
Если да то пошли ему событие WM_HOTKEY.

Автор, давай подробнее, видиш одного неискушенного человека уже запутал.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одновременное нажатие клавиш. Вадим Буренков Gamedev - cоздание игр: Unity, OpenGL, DirectX 11 08.04.2009 18:17
Нажатие клавиш bashkos JavaScript, Ajax 6 23.09.2008 19:01
Имитация нажатия комбинации клавиш Zeraim Win Api 15 05.05.2008 20:35
Нажатие клавиш VanDerKeen Win Api 1 03.06.2007 21:13