Access编程交流网
  • 设为首页|收藏本站|繁体中文|手机版
  •     
  • Access培训-Access开发平台-Access行业开发

  • 首页
  • 资讯
  • 技巧
  • 源码
  • 行业
  • 资源
  • 活动
  • 关于

技巧

ACCESS数据库

启动/设置/选项/背景

修复/压缩

安全/加密/解密

快捷键

版本升级/其它等

数据表

命名方式/设计规范

表设计

查询

Sql语言基础

选择查询

更新查询

删除查询

追加查询

生成表查询

交叉表查询

SQL特定查询

查询参数

查询综合应用

界面/窗体/控件

标签

文本框

命令按钮

组合框/列表框

选项组/复选框/选项按钮

选项卡

子窗体

窗体本身/综合应用

其它

报表打印

报表设计

高级报表

模块/函数/VBA/API/系统

VBA基础

内置函数

调试/跟踪/Debug

模块/类模块

API/COM/系统相关

字符数字日期

网络通信游戏

加密解密安全

文件处理

经典算法

宏/菜单/工具栏/功能区

宏/脚本

菜单/工具栏

功能区/Ribbon

图表/图形/图像/多媒体

图表

图形/图像

音频

视频/动画

DAO/链接表/ADO/ADP

DAO/链接表/ODBC

ADO/RDO

ADP

ActiveX/第三方控件/插件

Treeview树控件

ListView列表控件

Toolbar工具栏控件

微软其它控件

Dbi-Tech

CodeJock

Grid++Report

FastReport

ComponentOne

加载项/插件/Addin

OFFICE集成/导入导出/交互

Excel导入导出/交互

Word导入导出/交互

PPT交互

Outlook控制/邮件

Text文本文件/INI/CSV

PDF/SWF/XML格式

CAD格式

Sharepoint/其它Office

SqlServer/其它数据库

表

视图

存储过程/触发器

函数

用户/权限/安全

调试/维护

SqlServer其它/综合

发布/打包/文档/帮助

开发版/运行时

打包/发布/部署

开发文档/帮助制作

Access完整行业系统

采购管理系统

销售管理系统

仓库管理系统

人力资源管理HRM

CRM管理系统

MRP/ERP管理系统

BRP/流程优化

其它管理系统

心得/经验/绝招
其它/杂项
Excel技巧

Excel应用与操作

Excel开发编程

Word技巧

Word应用与操作

Word开发编程

Outlook技巧

Outlook应用与操作

Outlook开发编程

热门文章

  • API函数详解(转载自红尘..
  • Access API函数分..
  • 隐藏Access主窗口之二
  • 如何建立简单的超级连接?(..
  • VB用PrevInstan..
  • 获取本机机器名

最新文章

  • Access API函数分..
  • Access VBA 注册..
  • Access Excel ..
  • 毫秒级和纳秒级计时的API..
  • 一种比GetTickCou..
  • VB用PrevInstan..

联系方式

Access交流网(免费Access交流)

QQ:18449932 

网  址:www.access-cn.com

当前位置:首页 > 技巧 > 模块/函数/VBA/API/系统 > API/COM/系统相关
API/COM/系统相关

VBA保存剪贴板为JPG(加PrtScrn截屏)

我记得有位学员问及怎用VBA保存剪贴板到JPG的,
很多天后, 煮茶 老师叫我截屏, 截屏未成, 却找到这个答案,
那位学员的问题不知去哪里了, 也懒得去找了, 希望他看到这篇吧!

我测试了, 这环境下非常成功的!
其实我还成功操作 CorelDraw, CorelPaint 保存的,不过不是人人有安装!
Excel的 ChartObject 的 .Export jpg 也试过,成功又简易的,不过一点质量都没有的,只是为了Excel的图表输出,一张图另存出来又有个白边框,又变形,我不敢拿出来说成功了的!

正 文:

测试环境为 office 2003 + XP

Option Explicit
Private Type GUID
    Data1 As Long
    Data2 As Integer
    Data3 As Integer
    Data4(0 To 7) As Byte
End Type
Private Type GdiplusStartupInput
    GdiplusVersion As Long
    DebugEventCallback As Long
    SuppressBackgroundThread As Long
    SuppressExternalCodecs As Long
End Type
Private Type EncoderParameter
    GUID As GUID
    NumberOfValues As Long
    type As Long
    Value As Long
End Type
Private Type EncoderParameters
    Count As Long
    Parameter As EncoderParameter
End Type
Private Declare Sub keybd_event Lib "user32" _
(ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Private Declare Function GdiplusStartup Lib "GDIPlus" (token As Long, inputbuf As GdiplusStartupInput, ByVal outputbuf As Long) As Long
Private Declare Function GdiplusShutdown Lib "GDIPlus" (ByVal token As Long) As Long
Private Declare Function GdipCreateBitmapFromHBITMAP Lib "GDIPlus" (ByVal hbm As Long, ByVal hpal As Long, Bitmap As Long) As Long
Private Declare Function GdipDisposeImage Lib "GDIPlus" (ByVal Image As Long) As Long
Private Declare Function GdipSaveImageToFile Lib "GDIPlus" (ByVal Image As Long, ByVal filename As Long, clsidEncoder As GUID, encoderParams As Any) As Long
Private Declare Function CLSIDFromString Lib "ole32" (ByVal str As Long, id As GUID) As Long
'Private Declare Function GdipCreateBitmapFromFile Lib "GDIPlus" (ByVal filename As Long, Bitmap As Long) As Long
Private Declare Function IsClipboardFormatAvailable Lib "user32" (ByVal wFormat As Integer) As Long
Private Declare Function GetClipboardData Lib "user32" (ByVal wFormat As Integer) As Long
Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long '剪贴板
Private Declare Function CloseClipboard Lib "user32" () As Long

Const CF_BITMAP = 2
Private Sub My_Screen_1()
    Call keybd_event(vbKeySnapshot, 0, 0, 0)
    DoEvents
End Sub
  
Private Sub My_Screen_2()
    Call keybd_event(vbKeySnapshot, 1, 1, 1)
    DoEvents
End Sub

Public Function Screen2JPG(ByVal filename As String, Optional ByVal quality As Byte = 80) As Boolean
    
    Dim tSI As GdiplusStartupInput
    Dim lRes As Long
    Dim lGDIP As Long
    Dim lBitmap As Long
    Dim hBitmap As Long
    '复制单元格区域图像
    ''''''Range.CopyPicture xlScreen, xlBitmap
    My_Screen_2
    
    '打开剪贴板
    OpenClipboard 0&
    '获取剪贴板中bitmap数据的句柄
    hBitmap = GetClipboardData(CF_BITMAP)
    '关闭剪贴板
    CloseClipboard
    '初始化 GDI+
    tSI.GdiplusVersion = 1
    lRes = GdiplusStartup(lGDIP, tSI, 0)
     
    If lRes = 0 Then
        '从句柄创建 GDI+ 图像
         lRes = GdipCreateBitmapFromHBITMAP(hBitmap, 0, lBitmap)
        If lRes = 0 Then
            Dim tJpgEncoder As GUID
            Dim tParams As EncoderParameters
             
            '初始化解码器的GUID标识
            CLSIDFromString StrPtr("{557CF401-1A04-11D3-9A73-0000F81EF32E}"), tJpgEncoder
            '设置解码器参数
            tParams.Count = 1
                With tParams.Parameter ' Quality
                '得到Quality参数的GUID标识
                CLSIDFromString StrPtr("{1D5BE4B5-FA4A-452D-9CDD-5DB35105E7EB}"), .GUID
                .NumberOfValues = 1
                .type = 4
                .Value = VarPtr(quality)
            End With
             
            '保存图像
            lRes = GdipSaveImageToFile(lBitmap, StrPtr(filename), tJpgEncoder, tParams)
             
            '销毁GDI+图像
            GdipDisposeImage lBitmap
        End If
         
        '销毁 GDI+
        GdiplusShutdown lGDIP
    End If
    

        Screen2JPG = Not lRes
End Function

发布人:dbaseIIIer   
分享到:
点击次数:  更新时间:2011-10-08 23:32:32  【打印此页】  【关闭】
上一条:两种计价方式集成实例  下一条:VBA保存剪贴板为Bmp(加PrtScrn截屏)



相关文章

  • • Access API函数分享
  • • Access VBA 注册表操作源码
  • • Access Excel VBA程序同时兼容32位和64位的解决办法
  • • 毫秒级和纳秒级计时的API--timeGetTime、GetTickCount、QueryPerformanceCounter
  • • 一种比GetTickCount 和Timer更精确的计时器
  • • VB用PrevInstance和DDE实现禁止多个实例同时打开并传递命令
  • • 获取版本号及判断是否运行版本
  • • API获取网卡地址

热门文章

  • [2005-06-12] API使用集锦access数据库
  • [2005-08-16] 隐藏Access主窗口之二access数据库
  • [2013-11-14] Access从剪切版里复制和粘贴数据access数据库
  • [2003-12-20] 如何让你的程序在任务列表隐藏access数据库
  • [2016-12-19] 定时自动关闭msgbox 提示框access数据库
  • [2004-11-23] 把EXE文件存入到表的字段中,再从表中读出存到硬盘中的代码access数据库

热门产品

公司动态|在线留言|在线反馈|友情链接|会员中心|站内搜索|网站地图

中山市天鸣科技发展有限公司 版权所有 1999-2023 粤ICP备10043721号

QQ:18449932

Access应用 Access培训 Access开发 Access平台

access|数据库|access下载|access教程|access视频|access软件

Powered by MetInfo 5.3.12 ©2008-2025  www.metinfo.cn