IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Правильный WM_LButtonClick
сообщение
Сообщение #1


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Как правильно отправить кнопке клик мыши? Делал традиционно так:
Procedure clickng(w:THandle);
begin
SendMessage(w, WM_LButtonDown, 1, 1);
SendMessage(w, WM_LButtonUP, 1, 1);
end;


за 1-3 параметры уверен, а вот 4й - в msdn написано, что там должна быть структура с координатами курсора, а везде в сети там тупо 0 или 1, но я подозреваю, что это очередной ГК.. хотя раньше всегда так же делал, ну вот сейчас опять работает как-то непонятно и через раз.


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Ну, надо кнопку нажать.. или ещё как-то можно её нажать, не щелчком? Он как-то нестабильно работает. У меня на машине всегда, а на других иногда вообще не кликает, хотя тоже XP.. посмотрите, может не так делаю чего..


const kname='PrivatCom';
var kh,but1h:THandle;
Procedure clickng(w:THandle);
var r:TRect;
p:TPoint;
begin
getwindowrect(w,r);
p:=r.TopLeft;
ScreenToClient(w, p);
sendMessage(w, WM_LBUTTONDOWN, MK_LBUTTON, MakeLong(p.x, p.y));
sendMessage(w, WM_LBUTTONUP, MK_LBUTTON, MakeLong(p.x, p.y));
end;

function GetText(wnd:THandle):string;stdcall;
var p:array [0..pred(MAX_PATH)] of char;
begin
GetWindowText(wnd,p,max_path);
result:=strpas(p);
end;

var res:THandle;
fn:string;

function ChildTree(Han:THandle; Info: lparam):BOOL;stdcall;
var sp:string;
begin
sp:=ansiuppercase(gettext(han));
if pos(fn,sp)>0 then begin
res:=han;
result:=false;
end else result:=true;
end;

function findbut(h:THandle;fnk:string):THandle; //ищет дочерние окна h, в именах которых есть fnk
begin
res:=0;fn:=fnk;
enumChildWindows(h,@ChildTree, 0);
result:=res;
end;

function findnewk(k:THandle):THandle; //может быть несколько окон с одним caption-ом, ищет новое,
var d:integer; //если его нет, ждет пока оно появится 50 с.
begin
d:=0;result:=0;
repeat
result:=findbut(0,kname);
sleep(1);inc(d);
until ((result<>k) and (result<>0)) or (d=50000);
end;

Procedure kdown;
var k:THandle;
begin
kh:=findnewk(0);
sleep(3000); //надо ли?
if kh<>0 then but1h:=findbut(kh,'ПОДКЛЮЧЕНИЕ') else exit;
clickng(but1h);
end;


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Unconnected   Правильный WM_LButtonClick   19.06.2011 19:13
IUnknown   Опять "магические числа"? SendMessage(w…   19.06.2011 19:22
Unconnected   Проще, ну это для краткости) А xPos-yPos это искат…   19.06.2011 19:25
IUnknown   xPos и yPos - это координаты мыши (относительно кл…   19.06.2011 19:31
Unconnected   Проще, ну это для краткости) А xPos-yPos это искат…   19.06.2011 19:32
IUnknown   Это? The coordinate is relative to the upper-left …   19.06.2011 19:34
Unconnected   Procedure clickng(w:THandle); var r,r2:TRect; …   19.06.2011 20:00
IUnknown   Следи за руками: p:=r.TopLeft; ScreenToClient…   19.06.2011 20:17
Unconnected   O_o нажалось... я сначала примерно так же пробовал…   19.06.2011 20:33
Unconnected   deleted   20.06.2011 4:10
TarasBer   А тебе для чего посылать щелчок? Я когда таким обр…   20.06.2011 13:31
Unconnected   Ну, надо кнопку нажать.. или ещё как-то можно её н…   20.06.2011 15:53
TarasBer   Чтобы нажать кнопку, надо просто вызвать ту же про…   20.06.2011 16:07
Unconnected   Что-то новое.. и как её вызвать, тоже sendmessage …   20.06.2011 16:15
IUnknown   Угу... Все не так... Не надо делать этот ужасный ц…   20.06.2011 16:29
Unconnected   Ооо нет, опять эти dll, мэппинг, затыки на пустом …   20.06.2011 16:36
IUnknown   Да мне-то все равно, хоть вручную проверяй (показы…   20.06.2011 16:43
Unconnected   Хочу нормально, а с дллками связываться не хочу...…   20.06.2011 16:58
TarasBer   > Что-то новое.. и как её вызвать, тоже sendmes…   20.06.2011 17:22
Unconnected   Если бы своего, то понятное дело не кликал бы так)…   20.06.2011 17:27
TarasBer   http://msdn.microsoft.com/en-us/library/ms645478(V…   20.06.2011 18:11
IUnknown   2 Unconnected: :) [code=pas]const sCaptionToF…   20.06.2011 20:43
Unconnected   Procedure clickng(w:THandle); begin postmessage(…   20.06.2011 20:45
IUnknown   Да ладно... Control window - это оно и есть, окно …   20.06.2011 21:44
Unconnected   Ок, разделяю и властвую) То есть, Uppercase далеко…   21.06.2011 5:50
IUnknown   Это зависит от версии компилятора. По крайней мере…   21.06.2011 12:39
Unconnected   Ого, а у меня D7.. короче решил не заморачиваться,…   22.06.2011 5:13
skyjumping   так то оно так..   1.10.2012 23:17


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 8.05.2024 8:36
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name