您现在的位置: 中国男护士网 >> 考试频道 >> 计算机等级 >> 二级辅导 >> VB >> 辅导 >> 正文    
  VB抓屏保存为文件实现代码 【注册男护士专用博客】          

VB抓屏保存为文件实现代码

www.nanhushi.com     佚名   不详 

  下面是一个VB抓屏保存为文件的源文件,很不错的,有精力的可以参考一下。
  保存在标准模块
  Option Explicit
  Public Type BITMAPFILEHEADER
    bfType(0 To 1) As Byte
    bfSize As Long
    bfReserved1 As Integer
    bfReserved2 As Integer
    bfOffBits As Long
  End Type
  Public Type BITMAPINFOHEADER \'40 bytes
    biSize As Long
    biWidth As Long
    biHeight As Long
    biPlanes As Integer
    biBitCount As Integer
    biCompression As Long
    biSizeImage As Long
    biXPelsPerMeter As Long
    biYPelsPerMeter As Long
    biClrUsed As Long
    biClrImportant As Long
  End Type
  Public Declare Function GetDC Lib \"user32\" (ByVal hwnd As Long) As Long
  Public Declare Function CreateCompatibleDC Lib \"gdi32\" (ByVal hdc As Long) As Long
  Public Declare Function CreateDIBSection Lib \"gdi32\" (ByVal hdc As Long, pBitmapInfo As BITMAPINFOHEADER, ByVal un As Long, lplpVoid As Long, ByVal handle As Long, ByVal dw As Long) As Long
  Public 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
  Public Declare Function SelectObject Lib \"gdi32\" (ByVal hdc As Long, ByVal hObject As Long) As Long
  Public Declare Function DeleteDC Lib \"gdi32\" (ByVal hdc As Long) As Long
  Public Declare Function ReleaseDC Lib \"user32\" (ByVal hwnd As Long, ByVal hdc As Long) As Long
  Public Declare Function DeleteObject Lib \"gdi32\" (ByVal hObject As Long) As Long
  Public Declare Sub CopyMemory Lib \"kernel32\" Alias \"RtlMoveMemory\" (ByVal Destination As Long, ByVal Source As Long, ByVal Length As Long)
  Public Const DIB_RGB_COLORS = 0
  Public Const SRCCOPY = &HCC0020
  \'
  \'作者:money
  \'Email:2258773@163.com
  \'涵数功能:拷屏,保存为BMP文件
  \'成功返回真
  \'


  Public Function CopyScreenToBMP(ByVal szfile As String) As Boolean
   Dim w As Long, h As Long
   Dim scrDC As Long
   Dim DIB As Long, m_DC As Long
   Dim BmpInfo As BITMAPINFOHEADER
   Dim BmpFileHead As BITMAPFILEHEADER
   Dim pData As Long
   Dim buff() As Byte
   Dim old As Long
   Dim L As Long
    \'取屏幕 高宽
    w = Screen.Width \\ 15
    h = Screen.Height \\ 15
    \'准备内存DC
    m_DC = CreateCompatibleDC(0&)
    If m_DC = 0 Then
    CopyScreenToBMP = False
    Exit Function
    End If
    \'填充DIB的BMP结构
    With BmpInfo
    .biBitCount = 24
    .biPlanes = 1
    .biHeight = h
    .biWidth = w
    .biSize = 40 \'本结构长度
    End With
  DIB = CreateDIBSection(m_DC, BmpInfo, DIB_RGB_COLORS, pData, 0, 0)
    If DIB = 0 Then
    DeleteDC m_DC
    CopyScreenToBMP = False
    Exit Function
    End If
  old = SelectObject(m_DC, DIB)
    \'拷屏
    scrDC = GetDC(0)
    BitBlt m_DC, 0, 0, w, h, scrDC, 0, 0, SRCCOPY
  \'补足4的倍数
    L = (w * 3 + 3) And &H7FFFFFFC
    L = L * h
    \'分配内存
    ReDim buff(1 To L) As Byte
  \'取像素数据
    CopyMemory VarPtr(buff(1)), pData, L
  \'释放资源
    SelectObject m_DC, old
    DeleteObject DIB
    DeleteDC m_DC
    ReleaseDC 0, scrDC
    \'填充BMPFILE
  With BmpFileHead
    \'BM标志
    .bfType(0) = 66: .bfType(1) = 77
    .bfSize = 54 + L \'本文件大小
    .bfOffBits = 54 \'像素数据偏移地址
    End With
  \'写入文件
    \'懒得声明变量,直接用 L 存放文件号
    L = FreeFile()
    Open szfile For Binary As L
    \'写入文件头
    Put L, 1, BmpFileHead
    Put L, , BmpInfo
    \'写入实际像素
    Put L, , buff()
    Close L
  CopyScreenToBMP = True
  End Function
  \'
  \'例程
  Option Explicit
  Private Sub cmdTest_Click()
   Dim OK As Boolean
    OK = CopyScreenToBMP(\"c:\\test.bmp\")
    If OK Then
    Set Me.Picture = LoadPicture(\"c:\\test.bmp\")
    Else
    MsgBox \"CAO,拷屏失败了~\"
    End If
  End Sub

 

文章录入:杜斌    责任编辑:杜斌 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     

    联 系 信 息
    QQ:88236621
    电话:15853773350
    E-Mail:malenurse@163.com
    免费发布招聘信息
    做中国最专业男护士门户网站
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    VB抓屏保存为文件实现代…
    专 题 栏 目

      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)                            【进男护士社区逛逛】
    姓 名:
    * 游客填写  ·注册用户 ·忘记密码
    主 页:

    评 分:
    1分 2分 3分 4分 5分
    评论内容:
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。