再内存中创建一个和前台想兼容的设备场景,然后使用BitBlt来复制图片过去。我想应该是可以的吧? 当然PrintWindow我没怎么接触过,也许更合适你。就你的问题,如果hwnd是正确的,那么Print出来的东西就不应该是黑屏幕啊,你加一个判断试一试? Private Sub Command4_Click() '单点一下按钮大多数情况都是全黑的 if Val(text1.text)<>0 then Text2.Text = PrintWindow(Val(Text1.Text), Picture1.hDC, 0) Picture1.Refresh Text3.Text = GetPixel(Picture1.hDC, 100, 100) endif End Sub 这样就避免了hwnd的是0的可能性,你试试看。
Picture1.autoredraw=True
句柄肯定是对的,要不怎么timer几秒钟后,就截到图了呢。
感谢回答,但你这跟我的问题没什么关系,我现在的问题是第一个Picture有时候取得到图,大多时候取不到,关键是怎么能让他一次就取到
为什么不能我第一次点钮,就得到图呢?非得点N次
当然PrintWindow我没怎么接触过,也许更合适你。就你的问题,如果hwnd是正确的,那么Print出来的东西就不应该是黑屏幕啊,你加一个判断试一试?
Private Sub Command4_Click() '单点一下按钮大多数情况都是全黑的
if Val(text1.text)<>0 then
Text2.Text = PrintWindow(Val(Text1.Text), Picture1.hDC, 0)
Picture1.Refresh
Text3.Text = GetPixel(Picture1.hDC, 100, 100)
endif
End Sub
这样就避免了hwnd的是0的可能性,你试试看。
“再内存中创建一个和前台想兼容的设备场景,然后使用BitBlt来复制图片过去”这个能实现后台截图吗?具体用哪几个API?
就是我给你说的方法啊~~~,结合BitBlt
汗,a = PrintWindow(395116, Picture1.hDC, 0)
还是用PrintWindow,取不到呀,我还以为用别的API呢
GetDC函数可以实现的
PrintWindow之后,也Refresh了,我在我的电脑上测试是没有问题的。还真就不知道为什么了。