Без уточнений не решить. Да и код лишним не будет.
Игра Покер. 5 окон. Очередность их всегда разная, поэтому не могу ждать в окне, когда найдется очередная картинка.
Картинки ищутся поэтому каждые 50мс в цикле по всем окнам.
Нужно раз в 30 сек проверять была ли найдена картинка в каждом из окон.
Пытался сделать отдельным потоком со временем, но никак не могу понять как и куда запихать инфу, что картинка была найдена.
Собственно совсем немного не хватает. Нужно для каждого окна записать нахождение картинки, а в отдельный поток я уже сделал и там просто проходит проверка.
$h = hgetpid($_hwnd_self)
HSET($h,0)
$pos_x1 = 0
$pos_y1 = 0
$width = 840
$height = 610
$var = 0
while($var < 5) //запись id окон
$win[$var] = HGET (377, 200)
WNDPOS ($win[$var], $pos_x1, $pos_y1)
WNDSIZE ($win[$var], $width, $height)
wndstate($win[$var], 0)
print($win[$var])
inc($var)
end_cyc
$fold_l_x1 = 252
$fold_l_y1 = 565
$fold_l_x2 = 355
$fold_l_y2 = 585
$hide_l_x1 = 515
$hide_l_y1 = 565
$hide_l_x2 = 640
$hide_l_y2 = 585
$chk1 = 0
sub(fold, $window) //подпрограмма поиска одного из изображений в окне
// HSET($window,1)
GETSCREEN
SCANPICTURE($ARR_SCAN, $fold_l_x1-10,$fold_l_y1-10, $fold_l_x2+10,$fold_l_y2+10, "fold_l.bmp", -1, 90)
$ARR_NUM = 0
WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))
$X = $ARR_SCAN [$ARR_NUM]
INC($ARR_NUM,1)
$Y = $ARR_SCAN [$ARR_NUM]
INC($ARR_NUM,1)
lclick($X+10, $Y+10)
$chk1 = 1
END_CYC
UNDEFINE($ARR_SCAN)
SCANPICTURE($ARR_SCAN, $fold_l_x1-10,$fold_l_y1-10, $fold_l_x2+10,$fold_l_y2+10, "fold_l2.bmp", -1, 90)
$ARR_NUM = 0
WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))
$X = $ARR_SCAN [$ARR_NUM]
INC($ARR_NUM,1)
$Y = $ARR_SCAN [$ARR_NUM]
INC($ARR_NUM,1)
lclick($X+10, $Y+10)
// $chk1 = 1
END_CYC
UNDEFINE($ARR_SCAN)
SCANPICTURE($ARR_SCAN, $hide_l_x1-10,$hide_l_y1-10, $hide_l_x2+10,$hide_l_y2+10, "hide_l.bmp", -1, 90)
$ARR_NUM = 0
WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))
$X = $ARR_SCAN [$ARR_NUM]
INC($ARR_NUM,1)
$Y = $ARR_SCAN [$ARR_NUM]
INC($ARR_NUM,1)
lclick($X+10, $Y+10)
END_CYC
UNDEFINE($ARR_SCAN)
SCANPICTURE($ARR_SCAN, $hide_l_x1-10,$hide_l_y1-10, $hide_l_x2+10,$hide_l_y2+10, "hide_l2.bmp", -1, 90)
$ARR_NUM = 0
WHILE ($ARR_NUM < ARRSIZE($ARR_SCAN))
$X = $ARR_SCAN [$ARR_NUM]
INC($ARR_NUM,1)
$Y = $ARR_SCAN [$ARR_NUM]
INC($ARR_NUM,1)
lclick($X+10, $Y+10)
END_CYC
UNDEFINE($ARR_SCAN)
end_sub
//setthread(t_alert, 1)
//thread(t_alert) //отдельный поток с проверкой по времени
// wait(40)
// $var1 = 0
// while($var1 < 5)
// print($chk[$var1])
// if($chk[$var1] = 0)
// execute("alert.bat")
// halt
// end_if
// inc($var1)
// end_cyc
// $chk1 = 0
// setthread(t_alert, 2)
//end_thread
1:
$var = 0
while($var < 5) //вызов каждого из 5 окон в цикле раз 50 млсек. По окончании все сначала.
$window = $win[$var]
wndstate($win[$var], 1)
HSET($win[$var],1)
fold($window)
//print($chk1)
// if($chk1 = 1)
// waitms(100)
// $chk[$var] = $chk1
// waitms(100)
// end_if
// $chk1 = 0
// //print("chk",$var," - ",$chk[$var])
inc($var)
waitms(50)
// setthread(t_alert, 1)
end_cyc
goto(1)
halt