| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3089 人关注过本帖, 1 人收藏
标题:请教一个将屏幕指定区域保存为图片的问题
只看楼主 加入收藏
w7802672
Rank: 1
等 级:新手上路
帖 子:231
专家分:0
注 册:2015-5-20
结帖率:60%
收藏(1)
已结贴  问题点数:20 回复次数:18 
请教一个将屏幕指定区域保存为图片的问题
本人是个菜鸟,找到了一个MYDLL中将屏幕指定区域保存为图片的功能,但是运行的时候总出错,我也不知道该改什么地方,请帮忙看一下,先谢谢了!
源代码如下:
Declare Integer formtobmpA IN "mydll.dll" String bmpFileName,integer,integer,integer,integer
* "屏幕捕捉,保存当前屏幕指定区域的内容到文件 screena.bmp"
retVal = formtobmpA("screena.bmp",0,0,200,120)  && Save screen to file screena.bmp
if retval = 0
   messagebox("Capture screen ok!")
endif


搜索更多相关主题的帖子: 源代码 screen 图片 file 
2016-08-31 13:33
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:0 
出错提示什么?
2016-08-31 13:58
w7802672
Rank: 1
等 级:新手上路
帖 子:231
专家分:0
注 册:2015-5-20
收藏
得分:0 
回复 楼主 w7802672
出错提示信息为:
图片附件: 游客没有浏览图片的权限,请 登录注册
2016-08-31 14:02
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:20 
查一下 mydll.dll 的导出函数有无 formtobmpA 函数,函数名是否写错了?
2016-08-31 14:16
w7802672
Rank: 1
等 级:新手上路
帖 子:231
专家分:0
注 册:2015-5-20
收藏
得分:0 
回复 4楼 吹水佬
谢谢,只是不知道怎么查。
2016-08-31 14:22
w7802672
Rank: 1
等 级:新手上路
帖 子:231
专家分:0
注 册:2015-5-20
收藏
得分:0 
请大侠们帮个忙,我真的很需要这个功能,只是不知道怎么做。
2016-08-31 14:48
w7802672
Rank: 1
等 级:新手上路
帖 子:231
专家分:0
注 册:2015-5-20
收藏
得分:0 
哪位知道这个函数怎么用呢,恳请赐教啊!
2016-08-31 15:17
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43182
注 册:2014-5-20
收藏
得分:0 
写个类似功能的示例参考
**
** 屏幕截图
**
DECLARE LONG GetDC     IN user32 LONG
DECLARE LONG ReleaseDC IN user32 LONG, LONG

DECLARE LONG CreateCompatibleDC     IN gdi32 LONG
DECLARE LONG DeleteDC               IN gdi32 LONG
DECLARE LONG CreateCompatibleBitmap IN gdi32 LONG, LONG, LONG
DECLARE LONG SelectObject           IN gdi32 LONG, LONG
DECLARE LONG DeleteObject           IN gdi32 LONG
DECLARE LONG BitBlt                 IN gdi32 LONG, LONG, LONG, LONG, LONG, LONG, LONG, LONG, LONG

DECLARE LONG GdiplusStartup              IN gdiplus LONG@, STRING@, LONG
DECLARE LONG GdiplusShutdown             IN gdiplus LONG
DECLARE LONG GdipCreateBitmapFromHBITMAP IN gdiplus LONG, LONG, LONG@
DECLARE LONG GdipDisposeImage            IN gdiplus LONG
DECLARE LONG GdipSaveImageToFile         IN gdiplus LONG, STRING@, STRING@, LONG

_FormToBmp(0, "C:\TEMP\Test.bmp", 0, 0, 1000, 1000)
_FormToBmp(0, "C:\TEMP\Test.jpg", 0, 0, 1000, 1000)
CLEAR DLLS
RETURN


FUNCTION _FormToBmp(hWnd, OutFile, X, Y, Width, Height)
    LOCAL szExtName, bmpGUID, hDC, stGSI, lpGDI, hppDC, hBitmap, lpBitmap
        * 图像GUID
    szExtName = LOWER(JUSTEXT(OutFile))
    bmpGUID = ICASE(szExtName == "bmp", 0h00,;
                    szExtName == "jpg", 0h01,;
                    szExtName == "gif", 0h02,;
                    szExtName == "tif", 0h05,;
                    szExtName == "png", 0h06, "")
    IF ("" == bmpGUID)
        MESSAGEBOX("调用_FormToBmp(),无效的输出文件名")
        RETURN .F.
    ENDIF
    bmpGUID = bmpGUID + 0hF47C55041AD3119A730000F81EF32E
        * 获取窗口设备句柄
    hDC = GetDC(hWnd)
    IF (hDC == 0)
        MESSAGEBOX("调用_FormToBmp(),获取窗口设备句柄失败")
        RETURN .F.
    ENDIF
        * 初始化GDI
    stGSI = 0h01000000000000000000000000000000
    lpGDI = 0
    GdiplusStartup(@lpGDI, @stGSI, 0)
        * 获取截图设备句柄
    hppDC   = CreateCompatibleDC(hDC)
    hBitmap = CreateCompatibleBitmap(hDC, Width, Height)
        * 获取截图
    SelectObject(hppDC, hBitmap)
    BitBlt(hppDC, 0, 0, Width, Height, hDC, X, Y, 0xCC0020)  && SRCCOPY
        * 保存截图
    OutFile = STRCONV(OutFile + 0h00, 5)
    lpBitmap  = 0
    GdipCreateBitmapFromHBITMAP(hBitmap, 2, @lpBitmap)
    GdipSaveImageToFile(lpBitmap, @OutFile, @bmpGUID, 0)
        * 释放资源
    GdipDisposeImage(lpBitmap)
    DeleteObject(hBitmap)
    DeleteDC(hppDC)
    ReleaseDC(hWnd, hDC)
    GdiplusShutdown(lpGDI)
    RETURN .T.
ENDFUNC


[此贴子已经被作者于2016-8-31 15:29编辑过]

2016-08-31 15:27
w7802672
Rank: 1
等 级:新手上路
帖 子:231
专家分:0
注 册:2015-5-20
收藏
得分:0 
回复 8楼 吹水佬
谢谢您,我运行一下试试,真的非常感谢!
2016-08-31 15:44
w7802672
Rank: 1
等 级:新手上路
帖 子:231
专家分:0
注 册:2015-5-20
收藏
得分:0 
回复 8楼 吹水佬
我不太会用,怎么使用呢?直接作为程序运行吗?
2016-08-31 16:04
快速回复:请教一个将屏幕指定区域保存为图片的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.045957 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved