Что нового

[Автоматизация] Ускорение цикла поиска точки в неактивном окне

MrSokol

Новичок
Сообщения
11
Репутация
0
День добрый!
Подскажите пожалуйста, есть функция поиска точки в неактивном окне. Она работает, но очень долго (порядка 30 секунд)... Вот собственно вопрос, можно ли как-нибудь улучшить код и поднять производительность данной функции (хотя бы до 5-10 секунд). Код:
Код:
#include <WinAPIEx.au3>
#include <WinAPI.au3>

$hWnd = WinGetHandle("Territory "); заголовок окна для поиска
MsgBox(0,'',_FindPixInAct(0xF3BC4D,$hWnd)); вызов функции

Func _FindPixInAct ($iColor, $hWnd)
    Local $hDDC, $hCDC, $hBMP
    $iWidth = _WinAPI_GetWindowWidth($hWnd)
    $iHeight = _WinAPI_GetWindowHeight($hWnd)
    $hDDC = _WinAPI_GetDC($hWnd)
    $hCDC = _WinAPI_CreateCompatibleDC($hDDC)
    $hBMP = _WinAPI_CreateCompatibleBitmap($hDDC, $iWidth, $iHeight)
    _WinAPI_SelectObject($hCDC, $hBMP)
    DllCall("User32.dll", "int", "PrintWindow", "hwnd", $hWnd, "hwnd", $hCDC, "int", 0)
	; задаем начальные данные для поиска
	$iX = 0
	$iY = 0
	; начало цикла поиска
	While 1
		$sPixel = _WinAPI_GetPixel($hCDC, $iX, $iY)
		if ($sPixel = $iColor) Then
			MsgBox(0,'','Find')
			ExitLoop
		EndIf
		if ($iX > $iWidth) Then
			$iX = 0
			$iY += 1
		EndIf
		if ($iY > $iHeight) Then
			MsgBox(0,'','Not Find')
			$iX = -1
			$iY = -1
			ExitLoop
		EndIf
		$iX += 1
	WEnd
	; конец цикла поиска
    _WinAPI_ReleaseDC($hWnd, $hDDC)
    _WinAPI_DeleteDC($hCDC)
    Return ($iX&' '&$iY)
EndFunc   ;=>_FindPixInAct


Прошу сильно за код не пинать, перешел на AutoIt с AHK и пока еще не привык к нему полностью.
P.S. И заодно в довесок вопрос: немного не понял как поместить возврат функции в массив...Если есть знающие люди, которые помогут, буду очень признателен.
 
Автор
M

MrSokol

Новичок
Сообщения
11
Репутация
0
ой, огромное спасибо! :smile:
нашел тему с этой функцией по поиску, сейчас начну "курить" тему. А насчет этой функции - я её и переписал, правда нашел её на другом сайте по AutoIt...даже не думал что она появилась тут :smile:
 

edward_freedom

Осваивающий
Сообщения
200
Репутация
44
Первое сообщение удалил нечайно, посмотри в эту тему
http://autoit-script.ru/index.php?topic=4462.0
 
Верх