Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.03.13;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.03.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.007 c
3-39213
kalishenko stas
2003-02-20 19:19
2003.03.13
FastReport


1-39347
aade
2003-03-01 14:31
2003.03.13
создание Child формы


1-39311
Leny
2003-03-04 11:28
2003.03.13
Инсталяция


1-39305
Хоттабыч
2003-03-04 10:43
2003.03.13
PrinterSetup и принтер по умолчанию


3-39170
Шурик Ш
2003-02-19 18:59
2003.03.13
Сохранение результа запроса





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский