可能是这项问题(应用程序调用此函数时,不得在设备上下文中选择 由 hbmp 参数标识的位图):

所以,操作你的内存中 DDB 位图时需要注意(如捕获屏幕),需要创建新的兼容 DC 和兼容位图进行使用。
另外一个可能不一致的原因是:捕获屏幕的位图是 32 位图,如果当作是 24 位位图处理将会与预期结果不一致。
下述例子演示了 VB6 使用 API 进行截图、以及使用 GetPixel 函数、GetDIBits 函数获取屏幕上 (0,0) 点的颜色值,以 16 进制表示
在例子中,使用了一个 PictureBox 控件用以便捷化保存截图,对象名为 picTmp
【第一部分】:声明 API、结构体和定义常量(略,参考 VB6 的 API 浏览器)
[ 函数声明 ]
BitBlt
CreateCompatibleBitmap
CreateCompatibleDC
GetCurrentObject
GetObject
GetObjectType
GetDIBits(注: lpBI As BITMAPINFO 改为 lpBI As Any)
GetDC
ReleaseD
SelectObject
DeleteObject
DeleteDC
GetPixel
SetPixel
CopyMemory
[ 结构体声明 ]
BITMAP
BITMAPINFOHEADER
RGBQUAD
BITMAPINFO
[ 常量定义 ]
OBJ_BITMAP
SRCCOPY
DIB_RGB_COLORS
BI_RGB
【第二部分】:实际函数
[ 窗体加载时对控件的调整 ]

[ 截图并保存到文件 ]

[ 获取 ( 0, 0 ) 点 RGB 颜色分量,以 16 进制表示 ]

[ 辅助函数 GetCR ,用以从指定位置获取指定颜色 ]

【演示】
将文件编译为 exe 后,先获取 ( 0, 0 ) 点 RGB 颜色分量,再进行截图
最后上传的图片就是截图的结果:
