за 1-3 параметры уверен, а вот 4й - в msdn написано, что там должна быть структура с координатами курсора, а везде в сети там тупо 0 или 1, но я подозреваю, что это очередной ГК.. хотя раньше всегда так же делал, ну вот сейчас опять работает как-то непонятно и через раз.
--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
Ну, надо кнопку нажать.. или ещё как-то можно её нажать, не щелчком? Он как-то нестабильно работает. У меня на машине всегда, а на других иногда вообще не кликает, хотя тоже 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;
--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."