VB仿大漠GDI模式后台找图找色-揭秘后台图色窗口不黑的原理

记得老版的梦工厂论坛曾经有人讨论过,为什么youxi使用PrintWindow有时能截图有时却不能(有的youxi压根没成功过),

其实大漠的GDI模式的图色,截图同样使用的是这个函数,只不过它在printwindow前对窗口做了处理(为什么窗口要部分移出屏幕,为什么会有绑定窗口这一步),关键函数 SetWindowLong   GetWindowLong

Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
 
'常量
Private Const GWL_EXSTYLE = (-20)
Private Const WS_EX_LAYERED = &H80000
Private Const LWA_ALPHA = &H2
 
private Old as long '记录老的,解绑用
大漠GDI绑定所做的处理,记得窗口移出屏幕一部分哦
Public Function GdiInt(hwnd As Long) As Long
Dim l As Long, m As Long
Old = GetWindowLong(hwnd, GWL_EXSTYLE) '记录
l = Old Or WS_EX_LAYERED
GdiInt = SetWindowLong(hwnd, GWL_EXSTYLE, l) '设置GDI图色绑定
SetLayeredWindowAttributes hwnd, 0, 255, LWA_ALPHA '这一步不能少,少了窗口是一直黑的
End Function
 
'还原
 
Public Function GdiUn(hwnd As Long) As Long
GdiUn = SetWindowLong(hwnd, GWL_EXSTYLE, Old)
End Function
 
绑定处理后,使用PrintWindow看看,必须是大漠GDI图色支持的youxi啊- -

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值