获取x,y

时间:2016-01-29 21:20:55

标签: c#

我以前见过很多人问过这个问题,但似乎没有真正回答我的问题,我不敢问别人的问题。 我尝试将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++;
                  }

1 个答案:

答案 0 :(得分:1)

你知道薛定谔的猫吗​​?

这里的要点是,当窗口的那部分不可见时,像素没有明确的颜色。在Windows中,控件的内容是根据操作系统的请求绘制的。当操作系统知道某个窗口的一部分不可见时,它不会要求窗口绘制该区域。

您可以使用PrintWindow()Windows API函数要求Window将自己绘制到设备上下文(例如Bitmap)。然后,您可以检查该位图中的像素。

如何嵌入和使用PrintWindow()函数,请参阅http://www.pinvoke.net/default.aspx/user32.printwindow