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

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

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

Студворк — интернет-сервис помощи студентам
подскажите как программно нажать клавишу на клавиатуре, например "1"???
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.09.2011, 17:26
Ответы с готовыми решениями:

Отловить нажатие клавиши tab и выполнить программное нажатие enter
Подскажите пожл как осуществить подобное действие, в принципе нажатие на клавишу enter я итак знаю как отловить но незнаю какой функцией...

Программное создание RadioButton и нажатие по клавиатуре
Вот так оздал RadioButton RadioButton radioButton; public Form1() { InitializeComponent(); ...

Как связать нажатие клавиши на клавиатуре с JButton?
Добрый день, какой нужно использовать метод для "нажатия" кнопки в программе, после нажатия клавиши на клавиатуре?

42
4 / 4 / 2
Регистрация: 15.02.2011
Сообщений: 78
25.09.2011, 14:46  [ТС]
Студворк — интернет-сервис помощи студентам
[ArenaOnline3D] [ArenaOnline3D] (Допустимое окно) (Не скрыто) *[68086]**
вот что показало второй раз

и я не понял что сделать надо
0
 Аватар для deathNC
1905 / 1016 / 123
Регистрация: 08.12.2009
Сообщений: 2,792
Записей в блоге: 2
25.09.2011, 14:49
Цитата Сообщение от megostudent Посмотреть сообщение
*[68086]**
Это число - я так полагаю, это и есть Handle нужного окна (будь то форма или её контрол).

Добавлено через 49 секунд
Пробуй на этот получаемый хэндл и отсылать свой PostMessage...
0
4 / 4 / 2
Регистрация: 15.02.2011
Сообщений: 78
25.09.2011, 14:49  [ТС]
так первый раз когда я снимал эти значения цифры другие были

так а что ему не нрав если я название введу?
0
 Аватар для igoriy
873 / 544 / 117
Регистрация: 24.11.2009
Сообщений: 1,329
25.09.2011, 14:51
Ничего в природе не постоянно - и хэндл то же - это число не постоянное - оно смениться если перезапустишь прогу
1
 Аватар для deathNC
1905 / 1016 / 123
Регистрация: 08.12.2009
Сообщений: 2,792
Записей в блоге: 2
25.09.2011, 14:55
Цитата Сообщение от megostudent Посмотреть сообщение
так первый раз когда я снимал эти значения цифры другие были
При создании формы берётся любой незанятый хэндл. Не обязательно, который был в прошлый раз. Тем более не знаю, как даже и определить, какой был в прошлый раз (если самому не записывать)...

Цитата Сообщение от megostudent Посмотреть сообщение
ак а что ему не нрав если я название введу?
А ты за одну и ту же сессию сравни - совпадает ли получаемый хэндл через название (FindWIndow) с тем, который через код Igoriy получется...
0
4 / 4 / 2
Регистрация: 15.02.2011
Сообщений: 78
25.09.2011, 15:00  [ТС]
Delphi
1
2
3
4
5
6
7
8
9
var h:HWND; //Переменная для окон
begin
h:=FindWindow(nil,'Мой компьютер');  //Ищем нужную программу , точне окна
if h<>0 then //Если она найдено то....
begin
SendMessage(h,WM_KEYDOWN,VK_F1,0);  
SendMessage(h,WM_KEYUP,VK_F1,0);  
end;
end;
пришла мысль попробовать на чем-то простом) и решил вызвать справку у моего компьютера, печально, это не вышло(
0
 Аватар для deathNC
1905 / 1016 / 123
Регистрация: 08.12.2009
Сообщений: 2,792
Записей в блоге: 2
25.09.2011, 15:05
megostudent, дело не в хэндле. Попробуй так:
Delphi
1
SendMessage(FindWindow(nil, 'Мой компьютер'), WM_Close, 0, 1);
0
4 / 4 / 2
Регистрация: 15.02.2011
Сообщений: 78
25.09.2011, 15:29  [ТС]
не сработало, ток звучки дын, дын, дын ))
0
 Аватар для deathNC
1905 / 1016 / 123
Регистрация: 08.12.2009
Сообщений: 2,792
Записей в блоге: 2
25.09.2011, 15:37
Ну так хотя бы сработает поди:
Delphi
1
2
3
4
5
6
7
8
9
var
  hWindow: HWND;
begin
  hWindow := FindWindow(nil, PWideChar(Self.Caption));
  If hWindow <> Invalid_Handle_Value then
    PostMessage(hWindow, WM_Close, 0, 1)
  else
    MessageBox(Handle, 'Окно не нейдено!', 'Ошибочка!', mb_IconError);
end;
Просто возможно "Мой компьютер" в win7 не так называется, или никак не называется (там же на проводнике вообще надписей нет). Если у тебя не 7 и не Vista, то не знаю, почему не сработало...

Если на PWideChar заругается, то замени его на PAnsiChar!
0
4 / 4 / 2
Регистрация: 15.02.2011
Сообщений: 78
25.09.2011, 15:47  [ТС]
Delphi
1
hWindow := FindWindow(nil, PWideChar(Self.Caption));
[Error] Unit1.pas(30): Incompatible types: 'WideChar' and 'Char'
ошибка в строке

у меня ХР
0
 Аватар для deathNC
1905 / 1016 / 123
Регистрация: 08.12.2009
Сообщений: 2,792
Записей в блоге: 2
25.09.2011, 15:51
Цитата Сообщение от megostudent Посмотреть сообщение
[Error] Unit1.pas(30): Incompatible types: 'WideChar' and 'Char'
ошибка в строке
Я же написал тебе:
Цитата Сообщение от deathNC Посмотреть сообщение
Если на PWideChar заругается, то замени его на PAnsiChar!
Сделай так:
Delphi
1
hWindow := FindWindow(nil, PAnsiChar(Self.Caption));
И заработает

Добавлено через 1 минуту
Просто где-то в 2007 году WideChar и AnsiChar в дельфях немного поменялись местами, или как это сказать.

Не по теме:

Кароч, у меня Delphi 2009, у тебя, полагаю, Delphi 7...

0
86 / 86 / 13
Регистрация: 03.03.2011
Сообщений: 1,873
25.09.2011, 16:00
у меня такая же проблема с окном нарисованным в дериктХ,надло послать строку чату,например, фокус получают чат если нажать ентер(те сначала окну надо послать ентер). посылаю на хендл окна через пост,но ничего не происходит
п.с.игра perfect world
0
4 / 4 / 2
Регистрация: 15.02.2011
Сообщений: 78
25.09.2011, 16:03  [ТС]
да теперь заработало) какой из этого вывод то?)) как мне это воплотить в нажатие клавиш моих?)))
юзаю дельфу7
0
 Аватар для deathNC
1905 / 1016 / 123
Регистрация: 08.12.2009
Сообщений: 2,792
Записей в блоге: 2
25.09.2011, 16:06
Вывод их этого такой - когда ты пытался закрыть "мой компьютер", заголовок был введён тобою не правильно. Я тоже его ввёл неправильно. Поэтому FindWindow не нашла хэндл "Моего Компьютера".
Ещё можно сделать вывод, что надо всё таки всем контролам посылать сообщение...
А как это сделать, сейчас повспоминаю...
0
4 / 4 / 2
Регистрация: 15.02.2011
Сообщений: 78
25.09.2011, 16:22  [ТС]
прикольно но я менял хендл моего компьютера,
Delphi
1
2
SetWindowText(FindWindow(nil, 'Мой компьютер'),
    'НЕ мой компьютер');
и менялося все четко. друзья говорили что есть такая прога которая клацает 1,2,3 и т.д. знач как-то можно...
0
 Аватар для deathNC
1905 / 1016 / 123
Регистрация: 08.12.2009
Сообщений: 2,792
Записей в блоге: 2
25.09.2011, 19:10
Цитата Сообщение от megostudent Посмотреть сообщение
но я менял хендл моего компьютера
Может, надпись окна "Мой компьютер"?

И тут странный вывод можно сделать - окошко не закрылось. То есть ты хочешь сказать, что его хэндл всё таки нашёлся, а вот почему-то оно не закрылось...
Ну, я ещё гляну, в чём проблема. Если не забуду, отпишусь..
0
4 / 4 / 2
Регистрация: 15.02.2011
Сообщений: 78
26.09.2011, 10:36  [ТС]
блин реально просто название поменял. А можно окно по названию словить и "наказать" ему чтобы он принял нажатие клавиши ?

Добавлено через 11 часов 20 минут
может надо как-то узнать дескриптор окна?
0
 Аватар для deathNC
1905 / 1016 / 123
Регистрация: 08.12.2009
Сообщений: 2,792
Записей в блоге: 2
26.09.2011, 11:53
Хэндл (Handle: THandle) или (Handle: HWND) - это и есть дескриптор окна...
0
4 / 4 / 2
Регистрация: 15.02.2011
Сообщений: 78
26.09.2011, 21:38  [ТС]
deathNC ну что не нашел чего по теме?)

Добавлено через 1 час 58 минут
Delphi
1
2
3
4
5
6
7
8
9
var
  h : thandle;
begin
h:=null;
    h := findwindow('ArenaOnline3D', nil);
    SetForegroundWindow(h);
    sendMessage(h,WM_KEYDOWN,$31,0);
    sendMessage(h,WM_KEYUP,$31,0);
end;
вот че подыскал SetForegroundWindow(h); окно уже как-то реагирует, но нажатия не идет. Мож на какую мыслю натолкнет
0
 Аватар для deathNC
1905 / 1016 / 123
Регистрация: 08.12.2009
Сообщений: 2,792
Записей в блоге: 2
26.09.2011, 21:53
Delphi
1
2
3
4
5
6
var
  handle: HWND;
begin
  handle := FindWindow(nil, 'Корзина');
  PostMessage(Handle, WM_Close, 1, 1);
end;
Всё сработало
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.09.2011, 21:53

Нажатие кнопки Button по нажатию клавиши на клавиатуре
Всем добрый вечер , такая проблема облазил кучу сайтов и нашел много разного кода, но не один не заработал. Помогите пожалуйста, скиньте...

Имитировать нажатие клавиши на клавиатуре на низком уровне
Нужно имитировать нажатие сочетаний CTRL + C и CTRL + V, пытался использовать SendKeys, он вообще ни о чём, затем нашёл WinAPI функцию...

Программное нажатие клавиши
Мне нужна программа, которая с интервалом в 5 минут нажимают кнопку E (У русская).

Программное нажатие клавиши
Код по идеи должен программно жать F5 каждые 60 секунд Private Sub Timer1_Timer() Timer1.Interval = 0 End Sub Public Sub...

Программное нажатие клавиши
Здравствуйте. Подскажите пожалуйста, WF VS2008. Нужно в программу добавить строчку, по которой эмитировалось бы нажатие клавиши Enter. (как...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru