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

Вниз

Как имитировать нажатие мышки в чужом приложении....   Найти похожие ветки 

 
TankMan ©   (2002-12-18 01:19) [0]

Я знаю, что сдесь были темы подобные, но поиск сдесь.... вобщем "не работает"... хотел узнать...что я делаю не так?
Вобщем я пытаюсь нажать на кнопку в приложении...
var x:string;
hbutton:hwnd;
begin
hbutton:=findwindow(nil,"Any Title");
....
x:=inttohex(30,0); //координаты По вертикали
if length(x)<3 then x:=x+"0";
if length(x)<3 then x:=x+"0";
x:=x+inttohex(30,3); // /70 ropu3oHTA/1u
SendMessage(hbutton,WM_MOUSEMOVE,0,strtoint("$"+x));
SendMessage(hbutton,WM_LBUTTONDOWN,1,strtoint("$"+x));
SendMessage(hbutton,WM_LBUTTONUP,0,strtoint("$"+x));
....
Вобщем все... проверял на другой моей программке, которая обрабатывает эти сообщения - она их получает, но вот нажиматься кнопка даже и не думает...
Вот я хотел и узнать, как сделать так, чтобы приложение реагировало всетаки... я вобщем-то догадываюсь, что я нажимаю на саму форму, т.е. под кнопкой происходит нажатие на кнопку... а как тогда сделать, чтобы он кликал именно по тому что находится по этим координатам?...


 
Dm9 ©   (2002-12-18 01:58) [1]

wparam и lparam - это не координаты. Координаты - в wparam
По иксу - в младшем, по игреку - в старшем слове параметра wparam. Или наоборот - икс в старшем - не помню, сам поэкспериментируй.
В общем, это будет выглядеть так:
SendMessage (C, WM_LBUTTONUP, X shl 16 + Y, 0);
или
SendMessage (C, WM_LBUTTONUP, Y shl 16 + X, 0); - тут сам поэкспериментируй, поймёшь. Собственно, при нажатии на кнопку это роли не играет. ставишь координаты 1,1 - и всё работает:
SendMessage (C, WM_LBUTTONUP, 1 shl 16 + 1, 0);


 
Dm9 ©   (2002-12-18 02:01) [2]

Кстати, у тебя ведь в хбаттон не хандл кнопки. Для получения дескриптора кнопочки надо использовать
FindWindowEx или EnumChildWindows
А так ты действительно кликаешь по форме, находящейся под кнопкой


 
Dimka Maslov ©   (2002-12-18 10:43) [3]

mouse_event


 
TankMan ©   (2002-12-27 05:49) [4]

>>Dm9
Да я уж понял, что кликаю по форме, но как найти тогда кнопку, есля я не знаю, ее имени и типа... ну с типом можно поэкспериментировать, а вот с именем - уже проблема, и еще, ты говоришь, что координаты не в lparam и wparam, а только в wparam - а я разве утверждал обратное? В моем примере, как раз так и сделано...
Может есть какой-то путь найти незивестного типа кнопку?


 
Каспер ©   (2002-12-27 08:17) [5]

А нафига мышой кликать? :))))))))))))))))
Сам сначала так делал...
Потом просто переносил фокус на нужный компонент предварительно его отыскав
а потом посылал сообщение - НАЖАТИЕ ЕНТЕРА :)


 
Song ©   (2002-12-27 08:31) [6]

Передавайте BM_CLICK и не мучайтесь.


 
Каспер ©   (2002-12-27 10:08) [7]

2 СОНГ С этого все начинают когда первый раз приходиться с чужими окнами работать...
Зато потом основные действия проходят на 5


 
TankMan ©   (2002-12-28 05:38) [8]

>>Song
Куда подавать BM_CLICK? На саму форму?


 
Avsam ©   (2003-01-11 21:03) [9]

> TankMan
> Куда подавать BM_CLICK? На саму форму?

Найди Handle кнопки и на нее подай BM_Click.


 
MARcoDEN ©   (2003-01-12 12:29) [10]

var x,y:Integer;
begin
x:=random(300);
y:=random(200);
sendmessage(Handle,WM_LBUTTONDOWN,MK_LBUTTON,x+y shl 16);
sendmessage(Handle,WM_LBUTTONUP,MK_LBUTTON,x+y shl 16);


 
TankMan ©   (2003-01-22 10:01) [11]

(Ох... наконец-то вышел нормально в инет)
... в продолжение темы...
>>Avsam
А как мне найти хендл кнопки, если я не знаю, как она называется, какого она типа, и вообще кнопка ли это или просто панелька реагирующая на нажатие мышки?
Вообще, как-то можно найти хендл компонента по его координатам?Или нет?

>>MARcoDEN
Ну если принципиально.. у меня написано точно также... только я проследний параметр sendmessage записываю подругому...



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

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

Наверх




Память: 0.49 MB
Время: 0.02 c
6-39434
_dmitry
2003-01-22 10:55
2003.03.13
Помогите! Не пойму в чем ошибка!


6-39431
Axis_of_Evil
2003-01-22 14:33
2003.03.13
Site


3-39210
trans
2003-02-21 17:35
2003.03.13
Зачем проге сетевой диск?


7-39605
AL-Stuff
2003-01-18 09:53
2003.03.13
Обращение к TV-Tuner


3-39189
Shrek
2003-02-19 12:54
2003.03.13
Как изменить тип поля в MySQL?