getpixel只能取屏幕大小范围内的点值?
比如,取某窗口中某点,该窗口显示在最上层时可以取到,若是最小化或被压在后面,就无法取到了请问如何取最小化窗口中某点颜色???

解决方案 »

  1.   

    使用 window 的 DC 来分析
      

  2.   

    用下面的代码看看,最小化时 scaleheight 和 scalewidth 都为 0 了,用什么坐标 getpixelPrivate Sub Form_Resize()
        Debug.Print Me.WindowState, Me.ScaleHeight, Me.ScaleWidth
    End Sub
      

  3.   

    好的
    关键不是最小化 而是窗口被其他窗口压在下面或窗口用setwindowpos移到屏幕之外时就就无法取到了 我是用窗口的dc来取的
      

  4.   

    被覆盖或移出屏幕的区域不刷新,这是基本规则,可以设 AutoRedraw 属性强制刷新,例:'窗体左侧移出屏幕后取坐标 (0,0) 的 RGB 值
    Option ExplicitPrivate Sub Form_Load()
        Me.AutoRedraw = True '将改行注释起来结果果会不一样
        Me.ForeColor = vbRed
    End SubPrivate Sub Timer1_Timer()
        Me.Cls
        Line (0, 0)-(1000, 0)
        Debug.Print Now(), Hex(Me.Point(0, 0))
    End Sub
      

  5.   

    不知道如何将外部程序窗口强制刷新??不好意思啊我是菜鸟 是不是用sendmessage发paint命令?
      

  6.   

    当Me.AutoRedraw = True 时 窗口移到屏幕外
    dc = GetDC(Me.hwnd)
    MsgBox GetPixel(dc, 100,100)
    返回-1而用point(100,100)是可以得到正确值的难道对getpixel而言 只能取屏幕范围内的值???
      

  7.   

    补充 窗口在屏幕上时 GetPixel(dc, 100,100)是可以取到的