我在AHK中有一个脚本,它使用PixelColorSimple函数。
PixelColorSimple(pc_x, pc_y, pc_wID) {
if pc_wID
{
pc_hDC := DllCall("GetDC", "UInt", pc_wID)
pc_fmtI := A_FormatInteger
SetFormat, IntegerFast, Hex
pc_c := DllCall("GetPixel", "UInt", pc_hDC, "Int", pc_x, "Int", pc_y, "UInt")
pc_c := pc_c >> 16 & 0xff | pc_c & 0xff00 | (pc_c & 0xff) << 16
pc_c .= ""
SetFormat, IntegerFast, %pc_fmtI%
DllCall("ReleaseDC", "UInt", pc_wID, "UInt", pc_hDC)
return pc_c
}
}
它从背景/前景非最小化的窗口中检索像素的颜色,即使该像素在另一个窗口的后面。我需要在后台窗口上运行脚本,而在它前面的另一个窗口上运行。直到大约6至10分钟后,它才能使用此功能陷入循环,它才能正常工作,而我必须将窗口置于前台,以使其能够按预期方式恢复工作。我认为我的计算机在一段时间后不允许GetDC()
在后台窗口上工作,因此,关于如何确保它不会这样做的任何想法?还是这里的问题不是GetDC()
?谢谢。