Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> прога эмуляции мышки 
:(
    Опции темы
EDG_aka_Dima
Дата 26.12.2007, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 21.12.2007

Репутация: 1
Всего: 1



Пишу прогу эмуляции мышки, как могу так и пишу smile Всё вроде работает нормально, но кликания мышки не очень... Внизу прога с примером открывания свойств панели задач и Пуска и попытка(!) убрать галочку напротив одного из свойств. Всё это при разрешении 1024х768.
Проблема в том что при одинарном клике галка не убирается... при двойном - убирается и снова ставится.  о_О  Честно сказать такой расклад меня удивил... подумал как бы нажать на кнопку "полтора раза" ?  smile  Получилось что нада тока при тройном клике. Можно конечно так оставить... но это не дело... нажатие на на выбранный пункт в контекстном меню двойным кликом, а на какую то галку в окне - тройным. smile 
Прошу помощи разобраться.

Код

unit bot;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  P: TPoint;

implementation

{$R *.dfm}

procedure move(x,y: integer);
var ox,oy,dx,dy: integer;
begin
  GetCursorPos(P);
  ox:=P.X;
  oy:=P.Y;

  if ox=x then dx:=0 else dx:=round(1+abs(ox-x)/30);
  if oy=y then dy:=0 else dy:=round(1+abs(oy-y)/30);

  If ox>x then dx:=dx*-1;
  If oy>y then dy:=dy*-1;

  While (ox<>x) or (oy<>y) do begin
    If abs(ox-x)>=abs(dx) then ox:=ox+dx else ox:=x;
    If abs(oy-y)>=abs(dy) then oy:=oy+dy else oy:=y;
    SetCursorPos(ox,oy);
    sleep(10);
  end;

  Randomize;
  sleep(800-Random(500));
end;

procedure shift(dx,dy: integer);
var x,y: integer;
begin
  GetCursorPos(P);
  x:=P.X;
  y:=P.Y;
  x:=x+dx;
  y:=y+dy;
  move(x,y);
end;


procedure click();
var x,y: integer;
begin
  Randomize;
  GetCursorPos(P);
  x:=P.X;
  y:=P.Y;
  mouse_event(MOUSEEVENTF_LEFTDOWN,x,y,0,0);
  sleep(30-Random(15));
  mouse_event(MOUSEEVENTF_LEFTUP,x,y,0,0);
end;

procedure rclick();
var x,y: integer;
begin
  Randomize;
  GetCursorPos(P);
  x:=P.X;
  y:=P.Y;
  mouse_event(MOUSEEVENTF_RIGHTDOWN,x,y,0,0);
  sleep(30-Random(15));
  mouse_event(MOUSEEVENTF_RIGHTUP,x,y,0,0);
  sleep(400-Random(150));
end;

procedure dclick();
begin
  Randomize;
  click;
  sleep(250-Random(100));
  click;
  sleep(400-Random(150));
end;

procedure tclick();
begin
  Randomize;
  click;
  sleep(250-Random(100));
  click;
  sleep(250-Random(100));
  click;
  sleep(400-Random(150));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  sleep(500);
  move(1000,750);
  rclick;
  shift(-30,-15);
  dclick;
  move(40,290);
  dclick;
  shift(0,307);
  tclick;

end;

end.



Вообще думаю надо наверно как то чтобы окно проги было постоянно не активным... а то как раз из-за этого так и получается с кликами... наверное...
PM MAIL   Вверх
Rennigth
Дата 26.12.2007, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 15
Всего: 76



Цитата(EDG_aka_Dima @  26.12.2007,  18:08 Найти цитируемый пост)
  mouse_event(MOUSEEVENTF_LEFTDOWN,x,y,0,0);
  sleep(30-Random(15));
  mouse_event(MOUSEEVENTF_LEFTUP,x,y,0,0);

Странный click 0_o... Объясни мне неразумному смысл  данных действий учитывая цель как я понял это кликнуть?

Добавлено через 36 секунд
random то зачем?


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
EDG_aka_Dima
Дата 26.12.2007, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 21.12.2007

Репутация: 1
Всего: 1



гыгы) можно конечно и просто
Код

mouse_event(MOUSEEVENTF_LEFTDOWN,x,y,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,x,y,0,0);


просто со слипом игралсо чтобы всё не моментально было... типа приближённое к реальности ^^ 
PM MAIL   Вверх
Rennigth
Дата 26.12.2007, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 15
Всего: 76



EDG_aka_Dima, тогда... уж извини, но, очень советую ознакомиться smile
http://msdn2.microsoft.com/en-us/library/m...533(VS.85).aspx
много интересного smile
просто клики немного не так делаються, а Ваш код запускать если честно страшно... smile


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
EDG_aka_Dima
Дата 26.12.2007, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 21.12.2007

Репутация: 1
Всего: 1



Брррр... Будь добр объясни пожалуйста по русски как правильно клики делать? smile 

мне говорили ещё через send или postmessage можно делать клики... да только не разобрался :(
PM MAIL   Вверх
Coder
Дата 28.12.2007, 03:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 13.12.2004

Репутация: 2
Всего: 11



EDG_aka_Dima, скачай MS Spy++ (http://spypp.narod.ru/), проследи за любым окном и посмотри, какие сообщения  в него приходят при клике на нем мышью. А потом те же самые сообщения отправляй через SendMessage()
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0640 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.