Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 07.12.2012
Сообщений: 4
1

Эмуляция нажатия стрелок для неактивного запущенного приложения

07.12.2012, 04:24. Показов 2221. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Да, я видел, похожая тема уже есть
Эмуляция нажатия клавиш для неактивного/свёрнутого приложения.
но, к сожалению, изучив её вдоль и поперёк я ни на шаг не приблизился к успеху.
Задача передо мной стоит собственно такая:
нужно написать программу (как ни странно!, ну да ладно), которая управляет USB - игрушкой "ракетница", у которой поворачивается ствол по двум осям и она стреляет.
В комплекте с игрушкой есть программа для её управления вручную стрелками (прицеливание) и пробелом (выстрел). А хочется автоматически
Самым простым решением оказалось, как мне кажется, эмулировать нажатие стрелок и пробела из моей программы в заранее запущенную вышеописанную программу.
Объясните пожалуйста, как на моём примере использовать процедуру, описанную в теме (на которую ссылка выше). Или, может быть есть другой, более понятный (мне) способ.
А то я практически отчаялся прийти к успеху уже.
Прикладываю программу для управления игрушкой
Вложения
Тип файла: zip UsbMissileLauncher.zip (1.91 Мб, 40 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.12.2012, 04:24
Ответы с готовыми решениями:

Эмуляция нажатия клавиш для неактивного/свёрнутого приложения.
Есть большое желание написать что-то наподобии программы-макроса, которая будет отправлять или...

Эмуляция нажатия клавиш для другого приложения (Win10 Под D3D) не работает
Добрый день! У меня такая трабла возникла. Нужно В игре под директ3Д зажать правую кнопку мышки на...

Эмуляция нажатия клавиш для SDL
Столкнулся с такой проблемой что на эмуляцию нажатия клавиш, SDL не реагирует. Точнее DOSBox....

Быстрая эмуляция нажатия клавиш в боте для браузерки
Пишу бота для браузерных танчиков.Прицеливание работает по принципу:через BitBlt копируется нужное...

7
9 / 9 / 6
Регистрация: 13.09.2012
Сообщений: 136
07.12.2012, 16:41 2
Цитата Сообщение от scorpiosx3m Посмотреть сообщение
Да, я видел, похожая тема уже есть
Эмуляция нажатия клавиш для неактивного/свёрнутого приложения.
но, к сожалению, изучив её вдоль и поперёк я ни на шаг не приблизился к успеху.
Задача передо мной стоит собственно такая:
нужно написать программу (как ни странно!, ну да ладно), которая управляет USB - игрушкой "ракетница", у которой поворачивается ствол по двум осям и она стреляет.
В комплекте с игрушкой есть программа для её управления вручную стрелками (прицеливание) и пробелом (выстрел). А хочется автоматически
Самым простым решением оказалось, как мне кажется, эмулировать нажатие стрелок и пробела из моей программы в заранее запущенную вышеописанную программу.
Объясните пожалуйста, как на моём примере использовать процедуру, описанную в теме (на которую ссылка выше). Или, может быть есть другой, более понятный (мне) способ.
А то я практически отчаялся прийти к успеху уже.
Прикладываю программу для управления игрушкой
игрушку по почте высылайте
0
10231 / 6609 / 498
Регистрация: 28.12.2010
Сообщений: 21,156
Записей в блоге: 1
07.12.2012, 16:57 3
В комплекте с игрушкой есть программа для её управления вручную стрелками (прицеливание) и пробелом (выстрел). А хочется автоматически
поясните, что значит "автоматически".

Не по теме:

Кстати, оно поддерживает управление через Skype, а под скайп есть Skype4Com API.

0
0 / 0 / 0
Регистрация: 07.12.2012
Сообщений: 4
07.12.2012, 17:21  [ТС] 4
raxp, автоматически - это значит, что пользователь вводит сколько шагов нужно сделать в каждую сторону, например: 15 влево, 0 вверх, 4 вниз, 7 вправо. далее эта последовательность передается программе, управляющей игрушкои в виде эмуляции нажатия стрелок. и всё заканчивается выстрелом-пробел. я вижу это так


NotAffraid, обязательно вышлю
0
10231 / 6609 / 498
Регистрация: 28.12.2010
Сообщений: 21,156
Записей в блоге: 1
08.12.2012, 01:31 5
Авто-управление USB-ракетницей USB Missile Launcher

Эмуляция нажатия стрелок для неактивного запущенного приложения

(контроль свернутого приложения, клик по предполагаемой цели - возвращение в исходную точку и наводка на цель ...запоминание диффперемещений не реалиовывал)

Однако, считаю управление USB-ракетницей через контроль программы управления - тупиковым путем и вот почему: дело в том, что передача команд через USBHID.DLL в родной гуевой оболочке MissileLauncher реализована через отсчет временных интервалов зажатых клавиш LEFT, RIGHT, TOP, DOWN, что совершенно не дает гарантии точного позиционирования в абсолюте, т.е. можно использовать нечеткую логику, что по истечении такого-то интервала, переместиться туда-то или что нажав клавишу 28 раз по вертикали мы завершим весь радиус. Всегда будут погрешности, видимо поэтому есть в родной утилите возврат.

Уверен, что позиционирование в данном HID-гаджете осуществляется по абсолютным значениям от верхнего уровня. Только вот реализация в родной сделана "не по-людски". Был бы на руках сам гаджет, отследил бы чего конкретно шлется и можно было бы релизовать абсолютное позиционирование, а не fuzzy logik
1
0 / 0 / 0
Регистрация: 07.12.2012
Сообщений: 4
08.12.2012, 02:24  [ТС] 6
raxp,
дело в том, что самого гаджета у меня пока нет у самого.
Надеюсь, когда появится, станет пояснее.
В любом случае спасибо за пример программы.
Но вопрос, прозвучавший первоначально, остаётся открытым.
Цитата Сообщение от scorpiosx3m Посмотреть сообщение
как на моём примере использовать процедуру, описанную в теме (на которую ссылка выше). Или, может быть есть другой, более понятный (мне) способ.
+пожалуй, как активировать искомое окно, чтобы к нему обратиться на время прицеливания

Мммм... Или же я вообще что-то упустил? Управление родной программой вообще нельзя реализовывать таким способом? Т.е. нужно обязательно учитывать время зажатия клавиши?
0
0 / 0 / 0
Регистрация: 07.12.2012
Сообщений: 4
10.12.2012, 04:23  [ТС] 7
Экспериментирую с SendMessage и PostMessage - результат никакой

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm1.Button1Click(Sender: TObject);
    var MisLnch: HWND;
begin
    MisLnch:=FindWindow(nil, 'Missilelauncher');
  if MisLnch<>0 then begin
      PostMessage(MisLnch,WM_SETFOCUS,0,0);
      PostMessage(MisLnch, WM_KeyDown, byte(VK_UP), 0);
      Sleep(1500);
      PostMessage(MisLnch, WM_KeyUp, byte(VK_UP), 0);
  end;
    Button1.Caption:='конец';
end;
0
10231 / 6609 / 498
Регистрация: 28.12.2010
Сообщений: 21,156
Записей в блоге: 1
10.12.2012, 08:55 8
+пожалуй, как активировать искомое окно, чтобы к нему обратиться на время прицеливания
для этого его активировать не нужно, что прекрасно видно на моей утилите.

Управление родной программой вообще нельзя реализовывать таким способом? Т.е. нужно обязательно учитывать время зажатия клавиши?
а вы сами попробуйте на родной утилите зажать стрелочку, у меня по вертикали и горизонтали еще и разное количество кликов клавишами курсора.

Но вопрос, прозвучавший первоначально, остаётся открытым.
для меня уже нет
0
10.12.2012, 08:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.12.2012, 08:55
Помогаю со студенческими работами здесь

Получение нажатия клавиши из неактивного окна
Привет всем! Как можно получить нажатую клавишу, если окно приложения не активно?

Уведомление от неактивного приложения
Вобщем, суть вопроса в теме-как сделать так, чтобы установленное, но не запущенное приложение через...

Отлавливать нажатия стрелок
Может данная тема уже затрагивалась, но что-то поиском не могу найти и гугил не помогает. Вобщем...

Обработка нажатия стрелок клавиатуры
Мне нужно обработать события на клавиши &quot;вверх&quot;, &quot;вниз&quot; &quot;вправо&quot;,&quot;влево&quot;. Объясните пожалуйста по...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru