FindText,如何使用WindowToScreen()辅助函数与FindText()?



我一直在摆弄FindText图书馆用户feiyue在这里,我一直在使用它的一个辅助函数,我想知道谁是熟悉它可以帮助我。

目前我可以找到一个图形,数字4,通过使用以下命令:

#Include <FindText>
F1::
t1:=A_TickCount, Text:=X:=Y:=""
Text:="|<4>**50$6.66CCKqz66U"
if (ok:=FindText(X, Y, 1407-150000, 1196-150000, 1407+150000, 1196+150000, 0, 0, Text))
{
}
MsgBox, 4096, Tip, % "Found:`t" Round(ok.Length())
. "`n`nTime:`t" (A_TickCount-t1) " ms"
. "`n`nPos:`t" ok[1].x ", " ok[1].y
. "`n`nResult:`t<" (Comment:=ok[1].id) ">"
for i,v in ok  ; ok value can be get from ok:=FindText().ok
if (i<=2)
FindText().MouseTip(ok[i].x, ok[i].y)

但是上面使用的是屏幕坐标,所以它与我的监视器数组中的其他一堆坐标相匹配,甚至是目标窗口。它也很慢,我有4个显示器。

我尝试了一个测试,我在if (ok:=FindText(X, Y,,,,, 0, 0, Text))中指定了一个非常有限的坐标范围,它能够更快地找到10ms。但是使用硬编码的坐标是不理想的,因为我不断地移动这个窗口。

阅读了这个库的各种文章,我发现有一个帮助函数可以满足这个确切的需求,FindText().WindowToScreen(outX2, outY2, 200, 300)。我能找到的有关该函数的帮助提到:

FindText().WindowToScreen(outX2, outY2, 200, 300)如果未指定ahk_id,则使用活动窗口

我的目标是让脚本只到在搜索图形

时,查看活动的Windows主体但是我正在努力使用我以前的代码实际得到一个工作示例:

#Include <FindText>
F1::
t1:=A_TickCount, Text:=X:=Y:=""
Text:="|<4>**50$6.66CCKqz66U"
;if (ok:=FindText(X, Y, 1407-150000, 1196-150000, 1407+150000, 1196+150000, 0, 0, Text))
;if (ok:=FindText(X, Y, outX2, outY2, 777, 236, 0, 0, Text).WindowToScreen(outX2, outY2, 777, 236))
if (ok:=FindText(outX2,outY2, , , , , 0, 0, Text).WindowToScreen(outX2, outY2, 775, 60))
{
}
MsgBox, 4096, Tip, % "Found:`t" Round(ok.Length())
. "`n`nTime:`t" (A_TickCount-t1) " ms"
. "`n`nPos:`t" ok[1].x ", " ok[1].y
. "`n`nResult:`t<" (Comment:=ok[1].id) ">"
for i,v in ok  ; ok value can be get from ok:=FindText().ok
if (i<=2)
FindText().MouseTip(ok[i].x, ok[i].y)

脚本无法找到图形,我尝试了一堆变化,但没有工作。

我已经无计可施了,所以任何帮助都会很好。谢谢。

不如试试这样吧?如果(ok: = FindText。WindowToScreen(outX2,outY2,,,,, 0,0, Text)但是不知道它是如何工作的,如果在制作图像时让它们使用窗口区域而不是屏幕,那不是更好吗?不过在其他地方也见过这样的用法。实际上你不会想用FindText()。ScreenToWindow因为你只想让它使用你所在的窗口?

最新更新