永发信息网

怎样把目标窗口复制(bitblt)到我的窗口?

答案:2  悬赏:0  手机版
解决时间 2021-01-25 00:15
  • 提问者网友:無理詩人
  • 2021-01-24 19:57
我的目的是要把目标窗口(是游戏窗口)的内容复制到我的窗口中。代码如下:但是复制的内容是桌面的内容,请问是什么原因?应怎样改正。
Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Private Const SRCCOPY = &HCC0020 ' (DWORD) dest = source
Private Declare Function GetWindowDC Lib "user32" (ByVal hWnd As Long) As Long
Dim SourceDC As Long
Dim DescRect As RECT
Private Const GWL_WNDPROC = (-4)
Private Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Const PATCOPY = &HF00021 ' (DWORD) dest = pattern

Sub Size()
With DescRect
.Left = 0
.Top = 0
.Right = Me.Width / 15
.Bottom = Me.Height / 15
End With
End Sub

Private Sub Form_Load()
SourceDC = GetDC(2622462)
Call Size
End Sub

Private Sub Form_Resize()
Call Size
End Sub

Private Sub Timer1_Timer()
With DescRect
BitBlt Me.hDC, .Left, .Top, .Right, .Bottom, SourceDC, .Left, .Top, SRCCOPY
End With
End Sub

2622462这个是我通过其他途径得到的窗口句柄,当然在你测试的时候可以改。
游戏窗口若没被遮挡运行是正确的!
最佳答案
  • 五星知识达人网友:七十二街
  • 2021-01-24 20:11
不太明白为啥是这样子
SourceDC = GetDC(2622462)
GetDC(指定窗口窗口句柄)
这个句柄(hWnd)应该是通过枚举,或通过窗口名类名查找获取的窗口句柄。
全部回答
  • 1楼网友:轻熟杀无赦
  • 2021-01-24 20:18
内存设备上下文; 和客户设备上下文
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯