Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.16;
Скачать: CL | DM;

Вниз

mouse_event - не понял.   Найти похожие ветки 

 
Dude   (2003-10-04 17:01) [0]

Hi all!
Я юзаю mouse_event. Следующий код, по идее, должен по нажатию одной кнопки, нажимать другую.

procedure TForm1.Button2Click(Sender: TObject);
var
P:TPoint;
begin
P:=Button1.ClientToScreen(Point(1,1));
mouse_event(MOUSEEVENTF_ABSOLUTE+MOUSEEVENTF_LEFTDOWN,P.X,P.Y,0,0);
mouse_event(MOUSEEVENTF_ABSOLUTE+MOUSEEVENTF_LEFTUP,P.X,P.Y,0,0);
end;

Но он нажимает вторую кнопку. Почему?


 
Дубинин Алексей ©   (2003-10-05 23:08) [1]

Не могу сказать точно, но помоему ты в обоих моментах задаешь вторым параметром координаты 0 0...и куда она жмыхается? А вот идею не совсем понял...


 
Almaz ©   (2003-10-06 04:14) [2]


> Но он нажимает вторую кнопку. Почему?

По двум причинам:
1. Параметры, определяющие DX и DY актуальны только при выполнении команды MOUSEEVENTF_MOVE. Для остальных команд они игнорируются.
2. Даже если бы они не игнорировались, ваш код бы не сработал, т.к. координаты задаются не в пикселах а в нормализованных координатах.
А решение будет следующее:
var
P: TPoint;
begin
P := Button1.ClientToScreen(Point(1,1));
mouse_event(MOUSEEVENTF_MOVE or MOUSEEVENTF_ABSOLUTE,
Round(65535 / Screen.Width * P.X),
Round(65535 / Screen.Height * P.Y), 0, 0);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
end;


Если хотите при этом еще и вернуть курсор обратно, то запомните сначала текущие координаты курсора, получив их с помощью GetCursorPos а затем выполните еще один MOUSEEVENTF_MOVE.

Удачи.

p.s. А еще можно просто Button1.Click; ;)



Страницы: 1 вся ветка

Текущий архив: 2003.10.16;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.029 c
3-51096
Filat
2003-09-19 10:33
2003.10.16
SQL выборка и переход на эту запись в DataSet


14-51491
Думкин
2003-08-28 06:46
2003.10.16
Новосибирск


3-51067
Dark Elf
2003-09-26 12:36
2003.10.16
DBGrid


14-51504
Real
2003-09-27 12:47
2003.10.16
Игры для мобильных: кто занимался?


1-51222
Aleksandr
2003-10-03 18:35
2003.10.16
Как выгрузить свой ComObject?