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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2010, 00:25   #1
Revenger
 
Регистрация: 10.06.2009
Сообщений: 8
По умолчанию Управление другой программой

Доброго времени суток жителям форума.
Существуют функции перемещения курсора, имитации клика мышкой и нажатий клавиш клавиатуры. Столкнулся с проблемой - сторонняя программа имеет защиту, которая "чувствует" эти функции и не дает их выполнять над своим окном. Программа запущенная в оконном режиме. Что пробовал:
1. postmessage(findwindow(имя_окна_про граммы,nil),WM_LBUTTONDOWN,0,(x shl 16)+ y);
2. Процедуры типа mouse_event с относительными координатами и абсолютными (в связке с SetCursorPos).
3. Поиск хенделов конкретных кнопок программы. Никакой реакции, это не стандартные компоненты.

А цель существует всего лишь одна - имитация клика ЛКМ в данную область окна программы по данному условию. Посему такие вопросы:
1. Какие еще есть функции для перемещения и имитации клика курсором?
2. Как заставить работать дельфичью программу без фокуса (чтоб фокус был на программе, где собираюсь кликать)?
3. Если в программе есть перехват, как заставить дельфичью программу еще ближе работать к ОС, или дровами (не представляю, что необходимо в данном случае)? Ведь раз существуют хуки, значит, можно управлять неким порядком.
Revenger вне форума Ответить с цитированием
Старый 07.04.2010, 01:08   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

1)практически все вы назвали.
2)таймер например.

по вашим пометкам(что пробывали)
1)нужно же слать что кнопку нажали, потом отпустили.
и вообще насчет сообщений через Spy++ или подобное смотрим их. и потом эмитируем.
3)через тот же Spy++ смотрим иерархию окон, их классы и тд.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 07.04.2010, 21:32   #3
Revenger
 
Регистрация: 10.06.2009
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
1)практически все вы назвали.
1)нужно же слать что кнопку нажали, потом отпустили.
Само собой, причем курсор ведет себя странно - он не перемещается, но кликает в то место, где находится сейчас. К примеру, есть моя программка с одной кнопкой, по нажатию на которую курсор перемещается в определенную точку и там происходит клик ЛКМ. В итоге курсор не перемещается и постоянно кликает на кнопку (что вызывает зацикливание).

Буду читать про spy++, спасибо за ключевое слово.

Какие еще есть методы порядка приложений (не представляю, как это называется, в общем, чтоб программа не перехватывала команды моей дельфичьей программы)?
Revenger вне форума Ответить с цитированием
Старый 07.04.2010, 22:41   #4
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию

Revenger, "защита" программы наверна заключается в том, что она определяет по какой траектории двигается курсор мыши, т.е. человек же не может передвинуть курсор по прямой линии не сместившись ни на один пиксель в сторону, вот на этом наверна защита и строится, а вот setcursorpos работает по идеальной траектории, имхо
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли
Marsel737 вне форума Ответить с цитированием
Старый 07.04.2010, 23:05   #5
W0LF
Форумчанин
 
Аватар для W0LF
 
Регистрация: 28.03.2008
Сообщений: 940
По умолчанию

Кстати, вы тут напутали в коде, может из-за этого у вас нечего и не работает... Точно не знаю, но все же заикнусь.
Код:
postmessage(findwindow(вообщето здесь имя класса или nil, 
                                          а здесь имя окна или nil),WM_LBUTTONDOWN,0,(x shl 16)+ y);
А в вашем коде вышло наоборот, может из-за этого и не находит просто окно другой программы...
W0LF вне форума Ответить с цитированием
Старый 07.04.2010, 23:11   #6
Revenger
 
Регистрация: 10.06.2009
Сообщений: 8
По умолчанию

Marsel737, попробовал курсор перемещать попиксельно сперва по оси Х, потом - Y. Запустил сперва основную программу, потом - дельфичью. Нажал кнопку с этим кодом. Курсор начал движение... Но только до тех пор, пока был над дельфичьей прогой. Так курсор и остановился на границе окошка.

Все-таки, есть ли какие-то способы отправки кликов и нажатий клавиш так, чтоб их нельзя было перехватить (явно защита построена на этом)?

W0LF, действительно, порядок такой. Причем после этого исправления успешно работают конструкции типа SendMessage с посылкой нажатия конкретных клавиш в этой программе. Сейчас еще попробую с движением мыши. Огромное спасибо!

Последний раз редактировалось Revenger; 07.04.2010 в 23:18. Причина: Повторный ответ
Revenger вне форума Ответить с цитированием
Старый 08.04.2010, 19:22   #7
Revenger
 
Регистрация: 10.06.2009
Сообщений: 8
По умолчанию

Перемещение курсора так и не заработало, но для решения поставленной цели хватает отправки команд нажатия клавиш. W0LF, еще раз спасибо, тема закрыта.
Revenger вне форума Ответить с цитированием
Старый 10.04.2010, 21:57   #8
Revenger
 
Регистрация: 10.06.2009
Сообщений: 8
По умолчанию

Оказалось, что заблокирована и функция GetPixel. Были опробованы все возможные вариации, скорее всего, решение одно.
Информация из википедии о кольцах защиты - http://ru.wikipedia.org/wiki/Кольца_защиты
Есть подозрение, что с программой, запущенная с нулевого кольца, спокойно будут работать и GetPixel, и перемещение курсора. Тема - темный лес, буду благодарен за любую информацию, литературу и готовые коды о том, что есть такое программирование в дельфи для 0-го кольца.
Revenger вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Управление программой через 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