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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.09.2011, 21:13   #1
РенатZ
 
Аватар для РенатZ
 
Регистрация: 17.08.2009
Сообщений: 8
Лампочка Движения нажатие мыши (Эмуляция)

Дорогие специалисты своего дела у меня к вам просьба укажите на мои ошибки в коде!

Автокликер:
Перерыл весь форум и инет в течение недели ничего ненашел надеюсь только на вашу помощь

1) Получаю координаты мыши при нажатие левой кнопки мыши и записываю в Memo1,Memo2

Код:
// Получаю Кординаты мыши
procedure TForm1.Timer3Timer(Sender: TObject);
var
  rPos: TPoint;
begin
  GetCursorPos(rPos);

  // отлов нажатие левой кнопки мыши
  if GetAsyncKeyState(VK_LButton) <> 0 then
  begin
  Memo1.Lines.Add(IntToStr(rPos.x));
  Memo2.Lines.Add(IntToStr(rPos.y));


  end;
end;

2) Получаю координаты из Memo1,Memo2 в Edit3,Edit2 И воспроизвожу (кликает не в том месте либо раньше или вообще не кликает)


Код:
 // управление мышью
procedure TForm1.Timer2Timer(Sender: TObject);
var
  Point: TPoint;
begin

  if Timer2.Tag >= Memo2.Lines.Count then
    Timer2.Tag := 0;
  Edit2.Text := Memo2.Lines.Strings[Timer2.Tag];
  Timer2.Tag := Timer2.Tag + 1;

  if Timer2.Tag >= Memo1.Lines.Count then
    Timer2.Tag := 0;
  Edit3.Text := Memo1.Lines.Strings[Timer2.Tag];
   Timer2.Tag := Timer2.Tag + 1;

  point.x:=StrToInt(Edit3.Text);
  point.y:=StrToInt(Edit2.Text);

       //Преобразуем Pointк аболютным координатам курсора мышки
  Point.x := Round(Point.x * (65535 / Screen.Width));
  Point.y := Round(Point.y * (65535 / Screen.Height));
 
 //Переместим курсор мыши
  Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE, Point.x, Point.y, 0, 0);
 
 //Имитируем нажатие левой кнопки мыши
  Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, Point.x, Point.y, 0, 0);
 
 //Имитируем отпускание левой кнопки мыши
  Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, Point.x, Point.y, 0, 0);

  // application.ProcessMessages;

end;

Последний раз редактировалось РенатZ; 13.09.2011 в 21:33.
РенатZ вне форума Ответить с цитированием
Старый 13.09.2011, 21:40   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

1. Для ловли "тыков" мышки используем глобальный хук мыши.
Причина:
1. безотказная работа и скорость


2. Используйте класс Tlist и храните в нём свои TPoint в оторых записываете координаты x и y нажатия на экране..
Причина:
TList являет собой макрос который содержит список TPoint переменных, в которые пишутся x и y кликов мышки.
Его очень удобно использовать....
И не надо тоскать геморные mrmo

Код:
 
if Timer2.Tag >= Memo1.Lines.Count then
:facepalm:

Последний раз редактировалось Человек_Борща; 13.09.2011 в 21:42.
Человек_Борща вне форума Ответить с цитированием
Старый 13.09.2011, 21:43   #3
РенатZ
 
Аватар для РенатZ
 
Регистрация: 17.08.2009
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
1. Для ловли "тыков" мышки используем глобальный хук мыши, таймер в совокупности с GetAsyncState даёт пропусти и баги.
2. Используйте класс Tlist и храните в нём свои TPoint в оторых записываете координаты x и y нажатия на экране..
Без всяких memo1 и того бреда:
Код:
 if Timer2.Tag >= Memo1.Lines.Count then
который в коде...
Накидай пожалуйста код я за неделю уже ничего не понимаю
РенатZ вне форума Ответить с цитированием
Старый 13.09.2011, 21:49   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Я тоже=)

1-ый пункт успешно обитает в гугле и во множественных вариациях и реализациях
2-ой в дельфийской справке
Человек_Борща вне форума Ответить с цитированием
Старый 13.09.2011, 21:54   #5
РенатZ
 
Аватар для РенатZ
 
Регистрация: 17.08.2009
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Я тоже=)

1-ый пункт успешно обитает в гугле и во множественных вариациях и реализациях
2-ой в дельфийской справке
Всеровно спасибо буду искать решать следить за этой темой может тут помогут

Люди добрые помогите никак не могу решить проблему(

Последний раз редактировалось Stilet; 17.09.2011 в 08:21.
РенатZ вне форума Ответить с цитированием
Старый 15.09.2011, 14:58   #6
Larboss
Недо
Участник клуба
 
Регистрация: 11.08.2011
Сообщений: 1,394
По умолчанию

Ты хочешь просто автокликер сделать?
С помощью программирования можно разбогатеть и изменить мир к лучшему (с) Бьерн Страуструп
Larboss вне форума Ответить с цитированием
Старый 15.09.2011, 17:58   #7
РенатZ
 
Аватар для РенатZ
 
Регистрация: 17.08.2009
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Larboss Посмотреть сообщение
Ты хочешь просто автокликер сделать?
Да эта часть моей программы отвечает за запись и воспроизведения действий мыши Поможешь

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

Даже так все ровно тот же результат(((


Код:
procedure TForm1.Timer2Timer(Sender: TObject);
var
  Point: TPoint;
begin

  if Timer2.Tag >= Memo2.Lines.Count then
    Timer2.Tag := 0;
  Edit2.Text := Memo2.Lines.Strings[Timer2.Tag];
  Timer2.Tag := Timer2.Tag + 1;

  if Timer2.Tag >= Memo1.Lines.Count then
    Timer2.Tag := 0;
  Edit3.Text := Memo1.Lines.Strings[Timer2.Tag];
  Timer2.Tag := Timer2.Tag + 1;

  Point.x := StrToInt(Edit3.Text);
  Point.y := StrToInt(Edit2.Text);

 setcursorpos (Point.x,Point.y);

 
  // Имитируем нажатие левой кнопки мыши
  Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, 0,0,
    0, 0);
   application.ProcessMessages;
  // Имитируем отпускание левой кнопки мыши
  Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, 0, 0, 0,
    0);




end;
Объясните тогда как записывать и читать из тхт построчно X.Y Клик мыши!

Последний раз редактировалось Stilet; 18.09.2011 в 11:33.
РенатZ вне форума Ответить с цитированием
Старый 18.09.2011, 11:35   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
записывать и читать из тхт построчно
Используй TStringList. Примеры на форуме есть. LoadFromFile и SaveToFile.
начсет координат - надо знать как ты их в файле размещаешь.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.09.2011, 12:12   #9
РенатZ
 
Аватар для РенатZ
 
Регистрация: 17.08.2009
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Используй TStringList. Примеры на форуме есть. LoadFromFile и SaveToFile.
начсет координат - надо знать как ты их в файле размещаешь.
спасибо конечно насчет сохранить открыть я сумею)) Мне нужно в таком формат читать из тхт (x.y тут нажатие кнопки)
Код:
// Получаю Кординаты мыши
procedure TForm1.Timer3Timer(Sender: TObject);
var
  rPos: TPoint;
begin
  GetCursorPos(rPos);

  // отлов нажатие левой кнопки мыши
  if GetAsyncKeyState(VK_LButton) <> 0 then
  begin
  Memo1.Lines.Add(IntToStr(rPos.x , rPos.y));

Memo1.Lines.SaveToFile(Имя_файла); // сохранение

  end;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
var
  Point: TPoint;

begin


Point := LoadFromFile(Имя_файла); // тут надо загрузить построчно

 
 //Имитируем нажатие левой кнопки мыши
  Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, Point.x, Point.y, 0, 0);
 
 //Имитируем отпускание левой кнопки мыши
  Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, Point.x, Point.y, 0, 0);

end;


ну типа этого !

Последний раз редактировалось Stilet; 18.09.2011 в 12:21.
РенатZ вне форума Ответить с цитированием
Старый 18.09.2011, 12:22   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
rPos: TPoint;
Забудь о текстовых файлах и используй File of TPoint
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ограничение движения мыши Claster Помощь студентам 2 11.07.2011 11:47
Эмуляция клика мыши в C# GApe Общие вопросы C/C++ 0 04.05.2010 20:40
Имитация движения мыши dueram Win Api 5 02.04.2010 22:38
Эмуляция клика мыши Stimer Win Api 1 05.02.2009 04:06
Эмуляция мыши Travolta Общие вопросы .NET 0 07.11.2008 14:43