» Управление мышью Borland Delphi. . . Блог программистов


Блог программистов




20072 Мар

Управление мышью

Все наверное хотят использовать свои курсоры. И большинству нужны не просто курсоры, а анимированные курсоры. Вот что надо сделать для загрузки курсора:

implementation

const
crMyCursor = 1;

procedure TForm1.FormCreate(Sender: TObject);
begin
// Это единственный способ загрузки который я знаю
Screen.Cursors[crMyCursor] := LoadCursorFromFile(‘C:\Курсор.ani’);
// Устанавливаем курсор на форму
Cursor := crMyCursor;
end;

Теперь перейдём к быстрой настройки мыши. Вот как можно поменять кнопки мыши между собой:

SwapMouseButton(true); // Поменять
SwapMouseButton(false); // Поменять обратно

Теперь кинем на форму таймер и напишем там:

procedure TForm1.Timer1Timer(Sender: TObject);
var
position: TPoint;
begin
GetCursorPos(position);
Caption:=(‘(‘ + IntToStr(position.X) + ‘ ,’ + IntToStr(position.Y) + ‘)’);
end;

То что мы написали выводит в заголовке формы тикущие координаты курсора. Position.X – координата X; Position.Y – координата Y типа integer.

Перемещать мышь можно с помощью процедуры mouse_event(MOUSEEVENTF_MOVE, X, Y, 0, 0); где X – число, на которое сместиться курсор, в горизонтальной плоскости, из исходного положения. Y – число, на которое сместиться курсор, в вертикальной плоскости, из исходного положения.
Дополнение. Для клика мышкой в определённом месте экрана надо допустим в таймере прописать так
procedure TForm1.Timer1Timer(Sender: TObject);
var
position: TPoint;
begin
GetCursorPos(position);
Caption:=IntToStr(position.X)+’ ‘+IntToStr(position.Y);
// начало блока клика
mouse_event(MOUSEEVENTF_LEFTDOWN, position.X, position.Y, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, position.X, position.Y, 0, 0);
// конец блока клика
end;
Вот теперь мы кликаем в текущей позиции по таймеру. Для двойнова клика напишите блок клика два раза.

Комментарии

  1. Сергей
    Ноябрь 11th, 2007 | 08:56

    mouse_event ( MOUSEEVENTF_MOVE, X, Y, 0, 0 );
    смещение сомнительное и неточное!
    непонятно от чего зависит, но уж никак не от X и Y.
    Например при X =100 и Y = 100 смещается на 190-195 пикселей.
    Как бы уточнить?

  2. jora
    Декабрь 19th, 2007 | 00:10

    setcursorpos(x,y);
    x,y -координаты куда тыкнуть курсов и всё !!!
    не тупите так ! кто автор темы 1 раз в делфу палез …

  3. Алекс
    Декабрь 30th, 2007 | 08:31

    Я профан в программировании но мне нужна эта программа. Помогите кто может. Программа должна кликнуть мышкой в определенное место на экране в определенное время. Время должно быть с долями секунды.

  4. Алекс
    Декабрь 30th, 2007 | 08:33

    Еще вопрос. Есть ли мышки со встроенными таймерами в корпус мыши чтобы в определенное время кликнули. И где их найти?

  5. Алекс
    Декабрь 30th, 2007 | 08:34

    пишите на: nuny@albatros.uz

  6. Тёма
    Январь 27th, 2008 | 19:18

    А как наити координаты клика ? И потом после 2 кликом, между ними провести прямую ?

    Подскажите, очень нужно.

  7. Дима
    Июнь 24th, 2008 | 20:57

    Спасибо, как раз пишу прогу для рисования схемы на карте и координаты мыши важно знать без кликов

  8. unnamed
    Июнь 5th, 2009 | 17:32

    Алекс<<профан нахъ. автокликер пытается написать 😀 с этим помогать не буду.

  9. den
    Апрель 29th, 2010 | 12:22

    а как управлять мышкой через сокету(удаленное управление а не безумная мышка)?

  10. devy
    Май 11th, 2011 | 16:47

    Алекс<< сделай замыкание кнопки мыши не физическим нажатием, а при помощи мультивибратора на основе микросхемы логического НЕ.

  11. Няша
    Апрель 16th, 2013 | 13:02

    1 способ не работает. ошибок нет, но и ничего не происходит