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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.03.2009, 03:28   #1
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию имитация клавиш: ctrl+<буква>

в общем в теме все есть...

пытался найти но не нашел
помогите кто знает

Заранее спасибо
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 08.03.2009, 05:13   #2
AngelOfDeath
Delphi/C++/Asm
Форумчанин Подтвердите свой е-майл
 
Аватар для AngelOfDeath
 
Регистрация: 28.03.2008
Сообщений: 358
По умолчанию

В общем всё просто
Можно использовать keybd_event
Так можно нажать и отпустить Control+s:
Код:
keybd_event (VK_CONTROL,0,KEYEVENTF_EXTENDEDKEY,0);
keybd_event (31,0,KEYEVENTF_EXTENDEDKEY,0);
keybd_event(31,0,KEYEVENTF_KEYUP,0);
keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);
1) Скан код
3) Нажать или отпустить клавишу

Последний раз редактировалось AngelOfDeath; 08.03.2009 в 05:23.
AngelOfDeath вне форума Ответить с цитированием
Старый 08.03.2009, 13:03   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

keybd_event тут не подходит
но попробую аналогично через PostMessage
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 08.03.2009, 13:27   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
keybd_event тут не подходит
Это еще почему?
Элементарно - если нужно нажать, например, ctrl+a, то делаем так:
Код:
keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), 0, 0);
keybd_event(Ord('A'), MapVirtualKey(Ord('A'), 0), 0, 0);
keybd_event(Ord('A'), MapVirtualKey(Ord('A'), 0), KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), KEYEVENTF_KEYUP, 0);
А PostMessage удобно использовать для чужого окна:
Код:
PostMessage(hWnd, WM_KEYDOWN, VK_RETURN, 0);
hWnd - нужное окно

Последний раз редактировалось mihali4; 08.03.2009 в 13:32.
mihali4 вне форума Ответить с цитированием
Старый 08.03.2009, 13:50   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Михалыч, именно потому что нужно чужое окно
вообще не известно будет ли оно видимым

блин уже сонный был немного неверно вопрос сформулировал
как именно через PostMessage это сделать
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 08.03.2009, 14:25   #6
AngelOfDeath
Delphi/C++/Asm
Форумчанин Подтвердите свой е-майл
 
Аватар для AngelOfDeath
 
Регистрация: 28.03.2008
Сообщений: 358
По умолчанию

Я вообще не знаю
Но может быть так?
Код:
PostMessage(Edit1.Handle,WM_KEYDOWN, VK_CONTROL ,0);
PostMessage(Edit1.Handle,WM_KEYDOWN, 83 ,0);
PostMessage(Edit1.Handle,WM_KEYUP, VK_CONTROL ,0);
PostMessage(Edit1.Handle,WM_KEYUP, 83 ,0);
Edit1.handle заменить на другой Handle

Последний раз редактировалось AngelOfDeath; 08.03.2009 в 17:39.
AngelOfDeath вне форума Ответить с цитированием
Старый 08.03.2009, 17:48   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

по какой-то причине срабатывает как Alt+D
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Имитация нажатия клавиш Air Свободное общение 28 04.02.2010 12:38
Буква - не буква? nec117 Общие вопросы C/C++ 4 06.11.2008 17:27
Сочетание клавиш CTRL+HOME valerij Microsoft Office Excel 2 18.08.2008 08:43
Имитация нажатия комбинации клавиш Zeraim Win Api 15 05.05.2008 20:35
как вывести строку поочередно сначала первая буква первой строки потом первая буква второй строки и т.д. vitalik007 Помощь студентам 1 25.09.2007 20:45