我一直在摆弄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因为你只想让它使用你所在的窗口?