Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.96/23: Рейтинг темы: голосов - 23, средняя оценка - 4.96
megostudent
4 / 4 / 2
Регистрация: 15.02.2011
Сообщений: 78
1

Программное нажатие клавиши на клавиатуре

23.09.2011, 17:26. Просмотров 4187. Ответов 42
Метки нет (Все метки)

подскажите как программно нажать клавишу на клавиатуре, например "1"???
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.09.2011, 17:26
Ответы с готовыми решениями:

Перемещение обьекта по нажатию клавиши на клавиатуре
Допустим у меня есть компонент Image на форме, мне нужно чтобы по нажатию...

Программное нажатие mouse1
Можно ли как-то программно нажать mouse1? P.s. Mouse_Event не подходит!

Программное нажатие пробела
Как сделать,чтобы при нажатии на определенную кнопку программа делала несколько...

Как запретить нажатие определенных клавиш на клавиатуре в зависимости от нажатых до этого?
На форме расположено поле Edit и туда вводится некий текст. но при нажатии...

Программное нажатие кнопки backspace
Как программно нажать кнопку backspace?

42
igoriy
871 / 542 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
24.09.2011, 08:16 2
Нажатие клавиши F1
Delphi
1
2
    keybd_event(VK_F1, 0, 0, 0);
    keybd_event(VK_F1, 0, KEYEVENTF_KEYUP, 0);
0
MultiVan
59 / 59 / 4
Регистрация: 13.08.2011
Сообщений: 165
25.09.2011, 00:09 3
Цитата Сообщение от megostudent Посмотреть сообщение
подскажите как программно нажать клавишу на клавиатуре, например "1"???
Зависит от куда ты хочеш нажать , допустим хочеш в какую-ту программу нажать на NumPad3 :
Delphi
1
2
3
4
5
6
7
8
9
10
procedure TForm1.Button1Click(Sender: TObject);
var h:HWND; //Переменная для окон
begin
h:=FindWindow(nil,'Заголовок окна');  //Ищем нужную программу , точне окна
if h<>0 then //Если она найдено то....
begin
SendMessage(h,WM_KEYDOWN,VK_NUMPAD3,0);  //Нажимает на кнопку NumPad3
SendMessage(h,WM_KEYUP,VK_NUMPAD3,0);  //Поднимает кпопку NumPad3
end;
end;
1
megostudent
4 / 4 / 2
Регистрация: 15.02.2011
Сообщений: 78
25.09.2011, 11:11  [ТС] 4
Delphi
1
2
SendMessage(h,WM_KEYDOWN,$31,0);  
SendMessage(h,WM_KEYUP,$31,0);
$31- код нажатия на "1", но он почему-то не работает, может есть какой-то другой код еще???

(нажатие клавиши "1" я делаю в игре, может это важно)
0
deathNC
25.09.2011, 11:38
  #5

Не по теме:

megostudent, нужно ещё угадать, на какой элемент. Я тоже когда-то посылал окну сообщение, и думал, что и компонент нужный примет клавишу. Так что, надо точно Handle окна определить ;)

0
anonimus
2154 / 1244 / 143
Регистрация: 28.04.2010
Сообщений: 4,590
25.09.2011, 12:37 6
megostudent, вместо SendMessage попробуй PostMessage
0
megostudent
4 / 4 / 2
Регистрация: 15.02.2011
Сообщений: 78
25.09.2011, 12:51  [ТС] 7
окно находит(проверял), менял на postmessage но почему-то не происходит действий(
что может быть не так?
0
igoriy
871 / 542 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
25.09.2011, 12:53 8
А единицу надо отправить именно в окно или определенному контролу этого окна?
0
deathNC
1892 / 1005 / 123
Регистрация: 08.12.2009
Сообщений: 2,792
Записей в блоге: 2
25.09.2011, 12:58 9
igoriy, и я про то же!
0
igoriy
25.09.2011, 12:59
  #10

Не по теме:

deathNC, Ну я по проще думал.Извиняюсь

0
deathNC
25.09.2011, 13:16
  #11

Не по теме:

igoriy, та я не тебе, я про ТС. Я тоже думаю, что там контрол конкретный надо найти. А ТС форме отсылает PostMassge :D

0
megostudent
4 / 4 / 2
Регистрация: 15.02.2011
Сообщений: 78
25.09.2011, 13:29  [ТС] 12
ну в этой игре есть панель в ней ячейки от 1 до 12 (ну тип 1-= на клаве) ставиш действия на них и потом нажимаешь на 1 и он делает действие, вот так и мне над тип нажать 1 ток программно, пробовал еще менять управление ставил в управлении 1 не помогло (на F12 ставил- не помогло).
почему не пойму
0
igoriy
871 / 542 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
25.09.2011, 13:33 13
ну так тебе и надо найти хэндл этой панели и т д
0
deathNC
1892 / 1005 / 123
Регистрация: 08.12.2009
Сообщений: 2,792
Записей в блоге: 2
25.09.2011, 13:35 14
megostudent, либо как сказал igoriy (что более правильно), либо просто всем контролам отослать сообщение.
Всем не желательно, но если найду код, выложу...
0
igoriy
871 / 542 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
25.09.2011, 13:51 15
вот я тут не раз отправлял свою прогу на форуме - она мне часто помогает в таких случаях.
Запустишь прогу наведешь курсор на свою панель и нажмешь на клавишу I в любой раскладке и прога выдаст тебе все про твою панель

Добавлено через 1 минуту
странно файл не загружается

Добавлено через 1 минуту
скрыть окно
0
megostudent
4 / 4 / 2
Регистрация: 15.02.2011
Сообщений: 78
25.09.2011, 13:51  [ТС] 16
так поделитесь такой прогой которая именно определяет хендл панели)
так а какую именно скачать?)
0
igoriy
871 / 542 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
25.09.2011, 13:57 17
PozHandle помоему называется

Добавлено через 19 секунд
мой пост посмотри с вложениями
0
megostudent
4 / 4 / 2
Регистрация: 15.02.2011
Сообщений: 78
25.09.2011, 14:29  [ТС] 18
вот что показало
[ArenaOnline3D] [qwerty] (Допустимое окно) (Не скрыто) *[264438]**
там где кверти эт я его переименовывал
0
igoriy
871 / 542 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
25.09.2011, 14:40 19
Цитата Сообщение от megostudent Посмотреть сообщение
[ArenaOnline3D] [qwerty]
вот этот контрол вернее его хэндл и надо искать.
я так понял что он дочерний от формы (а вообще я не знаю что это за контрол) значит его надо искать с помощью функции
Функция FindWindowEx отыскивает данные о дескрипторе окна, имя класса и имя окна которого соответствуют определенным строкам. Функция поиска дочерних окон начинается с первого до последнего заданного дочернего окна.
Синтаксис
C++
1
2
3
4
5
6
7
HWND FindWindowEx
(
HWND hwndParent,  // дескриптор родительского окна
HWND hwndChildAfter, // дескриптор дочернего окна
LPCTSTR lpszClass,  // указатель имени класса
LPCTSTR lpszWindow  // указатель имени окна
);
Параметры
hwndParent
Идентифицирует родительское окно, чьи дочерние окна должны быть найдены. Если hwndParent - ПУСТО (NULL), функция использует окно рабочего стола как родительское окно. Функция ищет среди окон, которые являются дочерними окнами рабочего стола.
hwndChildAfter
Идентифицирует дочернее окно. Поиск начинается со следующего дочернего окна в Z - последовательности. hwndChildAfter должен быть прямое дочернее окно hwndParent, а не простое порожденное окно. Если hwndChildAfter - ПУСТО (NULL), поиск начинается с первого дочернего окна определенного параметром hwndParent. Обратите внимание, что, если и hwndParent и hwndChildAfter - ПУСТО (NULL), функция ищет все окна верхнего уровня.
lpszClass
Указывает на строку с нулевым символом в конце, которая определяет имя класса или - атом, который идентифицирует строку имени класса. Если этот параметр - атом, он должен быть общий атом, созданный предыдущим вызовом к функции GlobalAddAtom. Атом, 16-разрядное значение, в котором должно быть размещено в младшей части слова - lpszClass; старшее слово должно быть нулевое.
lpszWindow
Указывает на строку с нулевым символом в конце, которая определяет имя окна (заголовок окна). Если этот параметр ПУСТО (NULL), имена всех окон соответствующие.
Возвращаемые значения
Если функция завершается успешно, возвращаемое значение - дескриптор окна, которое имеет определенный класс и имена окон. Если функция потерпит неудачу, возвращаемое значение - ПУСТО (NULL). Чтобы получить дополнительные данные об ошибках, вызовите GetLastError.

Добавлено через 1 минуту
Цитата Сообщение от megostudent Посмотреть сообщение
264438
и еще посмотри совпадает ли этот хэндл с тем что находит твоя прога

Добавлено через 4 минуты

Не по теме:

deathNC, Сильно сенькью

0
deathNC
25.09.2011, 14:42     Программное нажатие клавиши на клавиатуре
  #20

Не по теме:

igoriy, :D работа у меня такая ;)

0
25.09.2011, 14:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.09.2011, 14:42
Привет! Вот еще темы с ответами:

Программное нажатие клавиш мыши
Уже 3 день думаю как сотворить сие)) Хочу в игре нажимать программно мышь через...

Перемещение картинки по форме при нажатии на клавиши стрелок на клавиатуре
Хочу, чтобы при нажатии на клавиши стрелок на клавиатуре картинка двигалась....

Нажатие клавиши
Здравствуйте уважаемые мною проффессионалы программирования! 8-) Мне нужны ваши...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru