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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2009, 18:00   #1
skeletishe
 
Регистрация: 26.03.2009
Сообщений: 8
По умолчанию не могу найти как нажать мышку из программы

помогите научиться перемещать мышку и нажимать кнопки на мыше из программы
нужны следующие действия:
нажать левую кнопу мыши и передвинуть курсор не отжимая мышь до нужных координат,
пауза, или временная задержка, т.е. нужно чтобы не сразу выполнялись команды, а с некоторой задержкой;
двойное нажатие;
Программист для виндовс - это хитрый садомазохист.
skeletishe вне форума Ответить с цитированием
Старый 26.03.2009, 18:11   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Как программно эмулировать нажатие мышкой на кнопку?

Для этого нужно послать сообщение Windows. Это можно сделать так:
Код:
ТButton1.Perform(WM_LBUTTONDOWN, 0, 0);
Эта строка посылает сообщение, что нажата левая кнопка мышки на ТButton1. Для правой кнопки мышки первый параметр изменится на WM_RBUTTONDOWN. Если захотите послать событие о поднятии кнопки, то первый параметр меняется на WM_LBUTTONUP или WM_RBUTTONUP для левой и правой кнопки соответственно.
С координатами еще проще:
В примере мышка слегка "подталкивается" без участия пользователя.
Код:
procedure TForm1.Button1Click(Sender: TObject);
var pt : TPoint;
begin
Application.ProcessMessages;
Screen.Cursor := CrHourglass;
GetCursorPos(pt);
SetCursorPos(pt.x + 1, pt.y + 1);
Application.ProcessMessages;
SetCursorPos(pt.x - 1, pt.y - 1);
end;
Кроме того, вам уже порекомендовано пользоваться поиском по форуму.
А наш СуперМодератор шутить не любит. Если сказал - то и отрежет...

Последний раз редактировалось mihali4; 26.03.2009 в 18:17.
mihali4 вне форума Ответить с цитированием
Старый 26.03.2009, 18:31   #3
skeletishe
 
Регистрация: 26.03.2009
Сообщений: 8
По умолчанию

Mouse_Event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
Mouse_Event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);

в этой команде для чего нолики, поэкспериментировал с подстановкой разных чисел ничего не обнаружил
Программист для виндовс - это хитрый садомазохист.
skeletishe вне форума Ответить с цитированием
Старый 26.03.2009, 18:33   #4
skeletishe
 
Регистрация: 26.03.2009
Сообщений: 8
По умолчанию

а как на счет задержки в выполнении команд? короче нужно перемещать курсор с интервалом 0,2 сек
Программист для виндовс - это хитрый садомазохист.
skeletishe вне форума Ответить с цитированием
Старый 26.03.2009, 18:36   #5
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
По умолчанию

Используйте компонент TTimer
Levsha100 вне форума Ответить с цитированием
Старый 26.03.2009, 20:36   #6
skeletishe
 
Регистрация: 26.03.2009
Сообщений: 8
По умолчанию

вроде разлулил, все события))
всем спасибо
Программист для виндовс - это хитрый садомазохист.
skeletishe вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно программно найти окно программы и нажать на нем кнопку SeRыЙ Win Api 23 09.03.2010 08:00
не могу нажать на кнопку 'Отправить' с помощью IdHTTP Dron_kss Работа с сетью в Delphi 3 17.04.2009 13:34
Как нажать спуск фотоаппарата? Mikhail Bakurov Помощь студентам 1 18.10.2008 04:14
как "ловить мышку" после ответа HTCAPTION на WM_NCHITTEST Ruzzz Win Api 5 15.10.2008 20:31
Не могу найти Handle Edit'а в окне чужой программы nechto Общие вопросы Delphi 32 05.03.2008 19:41