我以前见过很多人问过这个问题,但似乎没有真正回答我的问题,我不敢问别人的问题。 我尝试将Pixel颜色设置为窗口的(100,100)。此时我可以通过使用pixelsearch autoit来获取它,但是当它上面有另一个窗口时它无法工作。所以我只是想知道无论如何要让它发挥作用
au3.Sleep(1000);
SetForegroundWindow(hwndMain);
au3.PixelSearch(127, 232, 127, 232, 0x030100);
if (au3.error != 1)
{
SendMessage(hwndMain, WM_LBUTTONDOWN, new IntPtr(MK_LBUTTON), CreateLParam(127, 232));
SendMessage(hwndMain, WM_LBUTTONUP, new IntPtr(MK_LBUTTON), CreateLParam(127, 232));
au3.Sleep(1000);
//i++;
}
答案 0 :(得分:1)
你知道薛定谔的猫吗?
这里的要点是,当窗口的那部分不可见时,像素没有明确的颜色。在Windows中,控件的内容是根据操作系统的请求绘制的。当操作系统知道某个窗口的一部分不可见时,它不会要求窗口绘制该区域。
您可以使用PrintWindow()Windows API函数要求Window将自己绘制到设备上下文(例如Bitmap)。然后,您可以检查该位图中的像素。
如何嵌入和使用PrintWindow()函数,请参阅http://www.pinvoke.net/default.aspx/user32.printwindow