Главная страница
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.02 c
3-51094
Signed
2003-09-26 00:42
2003.10.16
Помогите разобраться новичку в БД


1-51311
sash2
2003-10-06 09:08
2003.10.16
Как автоматически запустить процесс?


1-51263
Endi
2003-10-07 00:24
2003.10.16
Редактор DLL


1-51191
Trojan
2003-10-04 20:50
2003.10.16
наглый вопрос :P


1-51308
Samael6
2003-10-06 12:27
2003.10.16
Пакеры