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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.08.2010, 20:13   #1
sincemix
 
Регистрация: 18.05.2010
Сообщений: 6
Вопрос Автоматизация кликов по окну

Нужна помошь задача такая
у нас есть форма мы делаем к примеру 4 клика мышью по этой форме в различных местах нажимаем например энтер и компьютер делает так же 4 клика в эти же координаты,сложность в том что компьютер делает свои клики без мыши тоесть в то время когда компьютер повторяет наши клики мы можем делать что хотим открывать другие программы переключаться между окнами ну и так далее возможно ли такое ну или хотя бы частично
sincemix вне форума Ответить с цитированием
Старый 02.08.2010, 20:40   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

хм возможно, думою так.. запоминать хенндл окна в котором происходит действие..
записывать кординаты курора в 4 местах, потом эмулировать нажатие опять-же в по координатам..

Ещё вариант, получать хендл окна и под курсором кроме координат определять какой компонент(допустим кнопка) находится , и потом этой кнопке посылать нажатия..
Более удобен.
Человек_Борща вне форума Ответить с цитированием
Старый 02.08.2010, 22:00   #3
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Имитировать нажание клавиши можно при помощи процедуры объявленный в файле Winuser.h следующим образом
void keybd_event(IN BYTE bVk, IN BYTE bScan, IN DWORD dwFlags, IN ULONG_PTR dwExtrainfo);
bVk - виртуальный код клавиши;
bScan - скан код клавиатуры (В большинстве случаев = 0);
dwFlags - определяет действие. Если 0 - нажатие клавиши. Если KEYEVENTF_KEYUP - эмулируется отпускание.
dwExtrainfo - развёрнутая информация о клавише. В большинстве случаев = 0.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 02.08.2010, 22:53   #4
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Принципиально писать самому или готовые решения устроят?
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 03.08.2010, 11:59   #5
sincemix
 
Регистрация: 18.05.2010
Сообщений: 6
По умолчанию

Да нужно писпть самомому и мне бы хотяб разобоаться с первой частью задачи где мы показываем компу в какие координаты кликать и он потом сам в эти координаты кликаает
sincemix вне форума Ответить с цитированием
Старый 03.08.2010, 12:09   #6
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

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

Надеюсь, проблем с записью действий нет?
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 03.08.2010, 12:45   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Для эмуляции ввода служит функция SendInput.
разве она клики имитирует?)
сообщения нужны)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.08.2010, 12:46   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Остальные варианты, либо неполноценны, либо являются оболочкой вокруг
Что за глупости? Разве послать сообщение клика через SendMessage - это неполноценность?
Цитата:
сложность в том что компьютер делает свои клики без мыши тоесть в то время когда компьютер повторяет наши клики мы можем делать что хотим открывать другие программы переключаться между окнами ну и так далее
Ради бога. Веди список кликов, координат и кликнутых окон, а потом посылай им сообщения WM_LBUTTONDOWN-WM_LBUTTONUP в нужные координаты.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.08.2010, 12:57   #9
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Что за глупости? Разве послать сообщение клика через SendMessage - это неполноценность?
Да.

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
разве она клики имитирует?
"The SendInput function inserts the events in the INPUT structures serially into the keyboard or mouse input stream."

Если же вопрос был про то, поддерживает ли она мышь, то.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 03.08.2010, 13:11   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
GunSmoker
...имхо, ерунда... Короче говоря автор пусть выбирает по вкусу.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Бот, для кликов. andriy1111 Общие вопросы Delphi 7 10.05.2010 08:28
Много кликов по клику =) KoBRaAndrey Общие вопросы Delphi 3 26.03.2010 17:19
Обработка кликов TСooltrayicon Shouldercannon Компоненты Delphi 2 04.06.2009 21:58
обработка кликов в treeview CraZZy RabbIt Общие вопросы Delphi 2 28.03.2009 22:28
Отлов кликов мыши LAFUDR Помощь студентам 9 24.05.2008 01:32