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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.09.2015, 16:06   #1
Sony_boy
Пользователь
 
Регистрация: 25.09.2015
Сообщений: 20
По умолчанию Не срабатывает клик мыши в указанных координатах

Здарова. Вот код который должен эмулировать клик мыши в указанных координатах
Код:
procedure TForm1.Button1Click(Sender: TObject);
 var x,y: word;
begin
x := Round(x * (992 / Screen.Width));
y := Round(y * (9 / Screen.Height));
SetCursorPos(x, y);
mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, x, y, 0, 0);
end;
end.
Но при нажатии на кнопку, форма программы скрывается, и клик в указанных координатах не проходит. Из-за чего???
Sony_boy вне форума Ответить с цитированием
Старый 30.09.2015, 16:42   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

А где вы задаете начальные значения x, y? Или думаете 0 можно умножать без последствий?
p51x вне форума Ответить с цитированием
Старый 30.09.2015, 16:59   #3
Sony_boy
Пользователь
 
Регистрация: 25.09.2015
Сообщений: 20
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
А где вы задаете начальные значения x, y?
Ну вот так и задаю:
Код:
x := Round(x * (992 / Screen.Width));
y := Round(y * (9 / Screen.Height));
а что не правильно?
Sony_boy вне форума Ответить с цитированием
Старый 30.09.2015, 17:14   #4
DIONISKA
Форумчанин
 
Регистрация: 07.11.2011
Сообщений: 161
По умолчанию

Цитата:

procedure TForm1.Button1Click(Sender: TObject);
var x,y: word;
begin
...
x := Round(x * (992 / Screen.Width));
y := Round(y * (9 / Screen.Height));
У вас здесь всегда будет x=0 и y=0. Клик происходит, но в нулевую точку.
DIONISKA вне форума Ответить с цитированием
Старый 30.09.2015, 17:20   #5
Sony_boy
Пользователь
 
Регистрация: 25.09.2015
Сообщений: 20
По умолчанию

Цитата:
Сообщение от DIONISKA Посмотреть сообщение
У вас здесь всегда будет x=0 и y=0. Клик происходит, но в нулевую точку.
А как правильно написать?
Sony_boy вне форума Ответить с цитированием
Старый 30.09.2015, 17:46   #6
DIONISKA
Форумчанин
 
Регистрация: 07.11.2011
Сообщений: 161
По умолчанию

Цитата:
А как правильно написать?
В x,y должны быть корректные значения, например
Код:
  x:=992;
  y:=9;
  SetCursorPos(x, y);
  mouse_event(MOUSEEVENTF_LEFTDOWN,  0,  0, 0);
  mouse_event(MOUSEEVENTF_LEFTUP, 0,  0, 0, 0);
к слову в mouse_event если не установлен флаг MOUSEEVENTF_ABSOLUTE нужно указывать не положение курсора, а его сдвиг. Т.е. в этом случае 0
DIONISKA вне форума Ответить с цитированием
Старый 30.09.2015, 20:41   #7
Sony_boy
Пользователь
 
Регистрация: 25.09.2015
Сообщений: 20
По умолчанию

Цитата:
Сообщение от DIONISKA Посмотреть сообщение
В x,y должны быть корректные значения, например
Код:
  x:=992;
  y:=9;
  SetCursorPos(x, y);
  mouse_event(MOUSEEVENTF_LEFTDOWN,  0,  0, 0);
  mouse_event(MOUSEEVENTF_LEFTUP, 0,  0, 0, 0);
к слову в mouse_event если не установлен флаг MOUSEEVENTF_ABSOLUTE нужно указывать не положение курсора, а его сдвиг. Т.е. в этом случае 0
При компиляции ошибка:
Not enought actual parameters
Sony_boy вне форума Ответить с цитированием
Старый 01.10.2015, 00:39   #8
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от DIONISKA Посмотреть сообщение
У вас здесь всегда будет x=0 и y=0. Клик происходит, но в нулевую точку.
Практически никогда не будет ноля. Будет "мусор". Локальные переменные не инициализируются.
northener вне форума Ответить с цитированием
Старый 01.10.2015, 05:47   #9
DIONISKA
Форумчанин
 
Регистрация: 07.11.2011
Сообщений: 161
По умолчанию

Цитата:
Сообщение от Sony_boy Посмотреть сообщение
При компиляции ошибка:
Not enought actual parameters
один аргумент пропустил в
Код:
 mouse_event(MOUSEEVENTF_LEFTDOWN,  0,  0, 0, 0);
Цитата:
Сообщение от northener Посмотреть сообщение
Практически никогда не будет ноля. Будет "мусор". Локальные переменные не инициализируются.
Теоретически возможно что он будет, но впрочем да, этого я не учёл, однако рандомный "мусор" ничем не лучше.
DIONISKA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
мышка срабатывает один клик самостоятельно beegl Компьютерное железо 4 21.06.2013 10:03
Клик мыши по цвету xRamzeSx Общие вопросы Delphi 8 06.02.2012 00:58
Клик мыши в опред. координатах MyXa JavaScript, Ajax 7 04.08.2011 16:22
TСhart, клик мыши и координаты XY, Определение координат оси при клике мыши Aravild Компоненты Delphi 1 31.01.2009 16:28
Клик мыши stayer Общие вопросы Delphi 1 30.10.2008 19:53