如何确保GetDC()始终在后台窗口上工作?

时间:2018-10-28 05:20:21

标签: windows-10 autohotkey gdi

我在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()?谢谢。

0 个答案:

没有答案