Что нового

ControlClick не отрабатывает в окне

GrafMine

Новичок
Сообщения
7
Репутация
0
написал такой скрипт :

Код:
global $TITL = WinWait("Andy", "", 3)
global $KlASS = "[CLASS:subWin; INSTANCE:1]"

If Not $TITL Then
    MsgBox(4096, 'Сообщение', 'Окно не найдено, завершаем работу скрипта')
    Exit
EndIf

If $TITL Then
	MsgBox(4096, 'Сообщение', 'Окно найдено')
EndIf

Func _click($coor)
    $aSplit = StringRegExp($coor,"(\d+), (\d+)",1)
   _left($aSplit[0],$aSplit[1])
EndFunc

Func _left($X, $Y, $CC = 1)
        ControlClick($TITL, "", $KLASS, "left", $CC, $X , $Y )
        ;ControlClick ( "[Class:Qt5QWindowIcon; Title:Andy]", "", "subWin1", "left", 1, 300, 200) <- так тоже пробовал
EndFunc

while 1
	_left(300, 175)
	sleep(1000)
wend


появляеться окошко что "окно найдено"

но клика в окне не просиходит.

Вот мой Summary по окну :

Код:
>>>> Window <<<<
Title:	Andy
Class:	Qt5QWindowIcon
Position:	11, 0
Size:	623, 1038
Style:	0x96CF0000
ExStyle:	0x00000100
Handle:	0x00000000000C0416

>>>> Control <<<<
Class:	subWin
Instance:	1
ClassnameNN:	subWin1
Name:	
Advanced (Class):	[CLASS:subWin; INSTANCE:1]
ID:	
Text:	sub
Position:	0, 14
Size:	607, 971
ControlClick Coords:	247, 164
Style:	0x58000000
ExStyle:	0x00000004
Handle:	0x00000000024A06CE

>>>> Mouse <<<<
Position:	266, 208
Cursor ID:	0
Color:	0xA65E34

>>>> StatusBar <<<<

>>>> ToolsBar <<<<

>>>> Visible Text <<<<
sub


>>>> Hidden Text <<<<
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
[box title=Из справки]Примечания
Некоторые элементы противодействуют нажатию на них мышью, если окно не активно. Используйте функцию WinActivate(), чтобы сделать окно активным, перед использованием ControlClick().[/box]
 
Автор
G

GrafMine

Новичок
Сообщения
7
Репутация
0
добавил :
Код:
$hWndId = 0x00000000000C0416;
WinActivate($hWndId)


результат : окно становиться активным как надо но все равно клика нет
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
GrafMine
все равно клика нет
Попробуйте поместить курсор мыши над этим элементом и запустить скрипт. Если ничего не произойдёт, поместите курсор мыши прямо над точкой клика, и запустите скрипт.
 
Автор
G

GrafMine

Новичок
Сообщения
7
Репутация
0
InnI сказал(а):
Попробуйте поместить курсор мыши над этим элементом и запустить скрипт. Если ничего не произойдёт, поместите курсор мыши прямо над точкой клика, и запустите скрипт.
попробовал клика все так же нет, но если написать вместо клика :
Код:
ControlSend($hWndId, "", "", "{SPACE}")

то все ок, т.е. все работает кроме клика что весьма странно
 
Автор
G

GrafMine

Новичок
Сообщения
7
Репутация
0
InnI сказал(а):
Ну и напишите, если работает.
Используйте
Код:
MouseClick()
это я написал то что я могу достучаться другими командами,MouseClick() - не подходит, т.к. мышка мне нужна для работы во втором мониторе .
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
GrafMine
мышка мне нужна
Последняя попытка
Код:
#include <WinAPI.au3>
#include <WindowsConstants.au3>

$hCtrl = ControlGetHandle("Andy", "", "subWin1")
If Not $hCtrl Then Exit ConsoleWrite("Элемент не найден" & @CRLF)
MouseLeftClick($hCtrl, 300, 200)

Func MouseLeftClick($hWnd, $X, $Y, $Sleep = 10)
  Local Const $MK_LBUTTON = 0x0001
  _WinAPI_PostMessage($hWnd, $WM_SETCURSOR, $hWnd, _WinAPI_MakeLong($HTCLIENT, $WM_LBUTTONDOWN))
  _WinAPI_PostMessage($hWnd, $WM_LBUTTONDOWN, $MK_LBUTTON, _WinAPI_MakeLong($X, $Y))
  Sleep($Sleep)
  _WinAPI_PostMessage($hWnd, $WM_SETCURSOR, $hWnd, _WinAPI_MakeLong($HTCLIENT, $WM_LBUTTONUP))
  _WinAPI_PostMessage($hWnd, $WM_LBUTTONUP, 0, _WinAPI_MakeLong($X, $Y))
EndFunc
 
Автор
G

GrafMine

Новичок
Сообщения
7
Репутация
0
InnI сказал(а):
Последняя попытка

Спасибо! Но чтоб заработало мне надо было изменить вот так :
Код:
$hWndId = 0x0000000000EF0956;
$hCtrl = ControlGetHandle($hWndId, "", "")
 
Верх