Opt('MustDeclareVars', 1) _MouseClick_To_Control_Color('[Title:Ad Muncher Configuration; Class:#32770]', _ '14607074', '[CLASS:Static; INSTANCE:24]', 'вернуть', 'любая', 'три', 'быстро') ;_MouseClick_To_Control_Color('[Title:Ad Muncher Configuration; Class:#32770]', 0xDEE2E2) ;_MouseClick_To_Control_Color('[Title:µTorrent 3.0; Class:µTorrent4823DF041B09]', 0xABD679, '[CLASS:SysListView32; INSTANCE:2]', False) If @error Then MsgBox(16, 'Error: ' & @error, '_MouseClick_To_Control_Color') Else MsgBox(64, 'Info', 'OK') EndIf Func _MouseClick_To_Control_Color($v_WinH_T, $i_Color, $v_Control = '', $f_Move = True, $s_Button = 'primary', $i_Clicks = 1, $i_Speed = 0) #cs Должна кликнуть по цвету на элементе окна. 1. $v_WinH_T: Handle (вида - 0x000B03FA) или Заголовок окна (вида - 'Ad Muncher Configuration' или '[Title:Ad Muncher Configuration; Class:#32770]'). 2. $i_Color: цвет на элементе (вида - 0xDEE2E2 или '0xDEE2E2' или 14607074), желательно, чтобы он был уникальным на элементе (окне), иначе возможны ошибки. 3. $v_Control: элемент окна (вида - '[CLASS:Static; INSTANCE:24]', или 'Static24', или 168 (ID). !!!Если не указан (''), то будет искать цвет на всей клиентской части окна!!!. Опционально: 4. $s_Button: кнопка мыши (по умолчанию 'primary'). Если неправильное значение (не входит в массив $a_Button - см. ниже), то будет кликать кнопкой 'primary' 5. $f_Move: True (или любое не пустое значение) - вернет курсор на прежнее место, False (0 или '') - нет (по умолчанию True). 6. $i_Clicks: кол-во кликов (по умолчанию 1). 7. $i_Speed: скорость перемещения курсора мыши в диапазоне от 1 - быстро до 100 - медленно (по умолчанию мгновенно). Успех: ничего не возвращает и флаг @error = 0. Неудача: флаг @error <> 0. #ce Local $i_Opt_M, $i_Opt_P, $a_Pos_Control, $a_Coord, $a_OldPosM, $f_ErrorButton = True, _ $a_Button[8] = [7, 'left', 'right', 'middle', 'main', 'menu', 'primary', 'secondary'], _ $i_Xl, $i_Yt, $i_Xr, $i_Yb For $i = 1 To $a_Button[0] If $s_Button == $a_Button[$i] Then $f_ErrorButton = False ExitLoop EndIf Next If $f_ErrorButton Then $s_Button = $a_Button[6] If Number($i_Color) < 0x000000 Or Number($i_Color) > 0xFFFFFF Then Return SetError(1) If Not $v_WinH_T Then Return SetError(2) If Not IsHWnd($v_WinH_T) Then If WinExists($v_WinH_T) Then $v_WinH_T = WinGetHandle($v_WinH_T) If Not $v_WinH_T Then Return SetError(3) Else Return SetError(4) EndIf EndIf If Not BitAND(WinGetState($v_WinH_T), 2) Then Return SetError(5) If $v_Control Then $a_Pos_Control = ControlGetPos($v_WinH_T, '', $v_Control) $i_Xl = $a_Pos_Control[0] $i_Yt = $a_Pos_Control[1] $i_Xr = $a_Pos_Control[0] + $a_Pos_Control[2] $i_Yb = $a_Pos_Control[1] + $a_Pos_Control[3] Else $a_Pos_Control = WinGetClientSize($v_WinH_T) $i_Xl = 0 $i_Yt = 0 $i_Xr = $a_Pos_Control[0] $i_Yb = $a_Pos_Control[1] EndIf If @error Then Return SetError(1) If Not WinActive($v_WinH_T) Then WinActivate($v_WinH_T) If Not WinWaitActive($v_WinH_T, '', 2) Then Return SetError(6) If $f_Move Then $a_OldPosM = MouseGetPos() EndIf $i_Opt_M = Opt('MouseCoordMode', 2) $i_Opt_P = Opt('PixelCoordMode', 2) $a_Coord = PixelSearch($i_Xl, $i_Yt, $i_Xr, $i_Yb, $i_Color, 0, 1, $v_WinH_T) If @error Then Return SetError(7) If Not Number($i_Clicks) Then $i_Clicks = 1 MouseClick('Left', $a_Coord[0], $a_Coord[1], $i_Clicks, $i_Speed) Opt('MouseCoordMode', $i_Opt_M) Opt('PixelCoordMode', $i_Opt_P) If $f_Move Then MouseMove($a_OldPosM[0], $a_OldPosM[1], 0) EndIf EndFunc ;==>_MouseClick_To_Control_Color |