高分求vb截图的方法

一般的截图并不困难.
不过一般的截图需要对象控件配合
我要做成DLL给别的程序调用,就不能有对象
简单来说就是在类模块里实现区域截图并保存
我再次强调:要在类模块里实现区域截图并保存

直接 工程->添加窗体 form1
然后在active的类中加个函数
public function abc()
form1.show vbmodal
end function
然后调用函数abc 就可以显示了
但是只能使用模式化窗体,也就是说,弹出窗体后,脚本到这里就停止了,一定要关闭窗体后,才能继续执行下面的脚本
如果你要修改显示的内容,就只能先关闭或者隐藏窗体,再传递新参数过去,再打开
传递控件内容到脚本的时候,也要绕一道弯,通过类的属性来取得
具体有很多需要注意的地方,一时半会也说不清,你可以试试,相信有vb 基础的很快就明白了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-03-11
>>要在类模块里实现区域截图并保存
---------------------------------------------
你就把下面的代码放到你定义的类模块内:

Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long

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

BitBlt Me.hDC, 0, 0, Screen.Width, Screen.Height, GetDC(0), 0, 0, vbSrcCopy
SavePicture Me.Image, "C:\JieTu.BMP"

-----------------------------
区域截图:

BitBlt Me.hDC, 100, 100, 400,400, GetDC(0), 0, 0, vbSrcCopy
上面的代码是实现截取以像素为单位的(100,100)-(400,400)的这部分的区域截图。
第2个回答  2008-03-13
1.即便是做成DLL,也可以用对象的
在 工程-引用(好久没有用VB6了,大概是这个位置),中添加你要用的控件。
然后在代码中写上Dim A as Object,Object就是你用的那个控件名(比如VB的文本框是TextBox等等)
然后就可以用了。

2. louisfung兄的方法比较简单易行,就是模拟PrintScreen实现抓图。
记住在执行
Call keybd_event(vbKeySnapshot, 0, 0, 0) '全屏
Call keybd_event(vbKeySnapshot, 1, 0, 0) '当前窗体
之后,使用PictureBoxFoo.Picture = Clipboard.GetData 就应该能保存图片了。
第3个回答  2008-03-09
调API截图就是了

==============

不好意思,没注意,你就是那个不喜欢我推荐的API的那位,算我多嘴了,当我啥也没说,sorry了
第4个回答  2008-03-11
楼主考虑下,也是调用API,模块什么的楼主可以自己思考自己的想法
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Call keybd_event(vbKeySnapshot, 0, 0, 0) '全屏
Call keybd_event(vbKeySnapshot, 1, 0, 0) '当前窗体