![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 10.06.2009
Сообщений: 8
|
![]()
Доброго времени суток жителям форума.
Существуют функции перемещения курсора, имитации клика мышкой и нажатий клавиш клавиатуры. Столкнулся с проблемой - сторонняя программа имеет защиту, которая "чувствует" эти функции и не дает их выполнять над своим окном. Программа запущенная в оконном режиме. Что пробовал: 1. postmessage(findwindow(имя_окна_про граммы,nil),WM_LBUTTONDOWN,0,(x shl 16)+ y); 2. Процедуры типа mouse_event с относительными координатами и абсолютными (в связке с SetCursorPos). 3. Поиск хенделов конкретных кнопок программы. Никакой реакции, это не стандартные компоненты. А цель существует всего лишь одна - имитация клика ЛКМ в данную область окна программы по данному условию. Посему такие вопросы: 1. Какие еще есть функции для перемещения и имитации клика курсором? 2. Как заставить работать дельфичью программу без фокуса (чтоб фокус был на программе, где собираюсь кликать)? 3. Если в программе есть перехват, как заставить дельфичью программу еще ближе работать к ОС, или дровами (не представляю, что необходимо в данном случае)? Ведь раз существуют хуки, значит, можно управлять неким порядком. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
1)практически все вы назвали.
2)таймер например. по вашим пометкам(что пробывали) 1)нужно же слать что кнопку нажали, потом отпустили. и вообще насчет сообщений через Spy++ или подобное смотрим их. и потом эмитируем. 3)через тот же Spy++ смотрим иерархию окон, их классы и тд. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#3 | |
Регистрация: 10.06.2009
Сообщений: 8
|
![]() Цитата:
Буду читать про spy++, спасибо за ключевое слово. Какие еще есть методы порядка приложений (не представляю, как это называется, в общем, чтоб программа не перехватывала команды моей дельфичьей программы)? |
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 09.11.2009
Сообщений: 669
|
![]()
Revenger, "защита" программы наверна заключается в том, что она определяет по какой траектории двигается курсор мыши, т.е. человек же не может передвинуть курсор по прямой линии не сместившись ни на один пиксель в сторону, вот на этом наверна защита и строится, а вот setcursorpos работает по идеальной траектории, имхо
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли |
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 28.03.2008
Сообщений: 940
|
![]()
Кстати, вы тут напутали в коде, может из-за этого у вас нечего и не работает... Точно не знаю, но все же заикнусь.
Код:
|
![]() |
![]() |
![]() |
#6 |
Регистрация: 10.06.2009
Сообщений: 8
|
![]()
Marsel737, попробовал курсор перемещать попиксельно сперва по оси Х, потом - Y. Запустил сперва основную программу, потом - дельфичью. Нажал кнопку с этим кодом. Курсор начал движение... Но только до тех пор, пока был над дельфичьей прогой. Так курсор и остановился на границе окошка.
Все-таки, есть ли какие-то способы отправки кликов и нажатий клавиш так, чтоб их нельзя было перехватить (явно защита построена на этом)? W0LF, действительно, порядок такой. Причем после этого исправления успешно работают конструкции типа SendMessage с посылкой нажатия конкретных клавиш в этой программе. Сейчас еще попробую с движением мыши. Огромное спасибо! Последний раз редактировалось Revenger; 07.04.2010 в 23:18. Причина: Повторный ответ |
![]() |
![]() |
![]() |
#7 |
Регистрация: 10.06.2009
Сообщений: 8
|
![]()
Перемещение курсора так и не заработало, но для решения поставленной цели хватает отправки команд нажатия клавиш. W0LF, еще раз спасибо, тема закрыта.
|
![]() |
![]() |
![]() |
#8 |
Регистрация: 10.06.2009
Сообщений: 8
|
![]()
Оказалось, что заблокирована и функция GetPixel. Были опробованы все возможные вариации, скорее всего, решение одно.
Информация из википедии о кольцах защиты - http://ru.wikipedia.org/wiki/Кольца_защиты Есть подозрение, что с программой, запущенная с нулевого кольца, спокойно будут работать и GetPixel, и перемещение курсора. Тема - темный лес, буду благодарен за любую информацию, литературу и готовые коды о том, что есть такое программирование в дельфи для 0-го кольца. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Управление программой через LPT порт | firmwares | Помощь студентам | 12 | 27.02.2011 00:33 |
Управление чужой программой через WEB. | MethSpeed | Безопасность, Шифрование | 9 | 20.07.2008 14:45 |
Управления другой программой | terminadoor | Win Api | 3 | 14.07.2008 10:49 |
Управление другой программой. | regedit2 | Общие вопросы C/C++ | 1 | 24.12.2007 21:49 |