| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 59 人关注过本帖
标题:请问如何将已保存到粘贴板里的截图存为指定文件(如d:\1.jpg)
取消只看楼主 加入收藏
shschy
Rank: 2
等 级:论坛游民
帖 子:136
专家分:45
注 册:2022-3-13
结帖率:36.36%
收藏
 问题点数:10 回复次数:1 
请问如何将已保存到粘贴板里的截图存为指定文件(如d:\1.jpg)
请问如何将已保存到粘贴板里的截图存为指定文件(如d:\1.jpg)
已完成对屏幕指定位置指定区间进行截图,并保存到粘贴板里,但从粘贴板里保存到文件无法成功,各种报错。环境win10+vfp9

搜索更多相关主题的帖子: 保存 指定文件 jpg 指定 环境 
昨天 07:35
shschy
Rank: 2
等 级:论坛游民
帖 子:136
专家分:45
注 册:2022-3-13
收藏
得分:0 
学习后可以保存当前活动窗口截图,但如何保存win10黏贴板里的截图?
如保存当前活动窗口截图:   =myjt(_screen.hwnd,"_screen.bmp")
如保存当前VFP_窗口截图:   =myjt(_vfp.hwnd,"_vfp.jpg")
如何保存操作系统黏贴板里的截图?尝试=myjt(_cliptext,"_vfp.jpg")无效

PROCEDURE myjt(hwnd,tcFile)
LOCAL cFileExtName, cEncoder, iInputBuf, iResult, hDesktopDc, hVDc, hBitmap, hToken, hGdipBitmap,encoderClsid,lprect,x4,y4,abc
m.cFileExtName =LOWER( JUSTEXT( m.tcFile ))
ERASE (tcfile)
DECLARE INTEGER GetDC IN user32 INTEGER hwnd
Declare SHORT GetWindowRect IN user32 INTEGER hwnd, STRING @ lpRect
DECLARE Long ReleaseDC IN WIN32API  Long hWnd, Long hDc
DECLARE Long CreateCompatibleDC IN WIN32API  Long hDc
DECLARE Long DeleteDC IN WIN32API  Long hDc
DECLARE Long CreateCompatibleBitmap IN WIN32API  Long hDc, Long nWidth, Long nHeight
DECLARE Long SelectObject IN WIN32API  Long hDc, Long hObject
DECLARE Long DeleteObject IN WIN32API  Long hObject
DECLARE Long GdiplusStartup IN gdiplus Long @ token, String @ inputbuf, Long @ outputbuf
DECLARE Long GdiplusShutdown IN gdiplus  Long token
DECLARE Long GdipCreateBitmapFromHBITMAP IN gdiplus  Long hbitmap, Long hpalette, Long @ hGpBitmap
DECLARE Long GdipDisposeImage IN gdiplus  Long image
DECLARE Long GdipSaveImageToFile IN gdiplus Long nImage, String FileName,String @ clsIdEncoder, Long encoderParams
DECLARE INTEGER CLSIDFromString IN ole32 STRING lpsz, STRING @pclsid
DECLARE INTEGER PrintWindow IN user32 INTEGER,INTEGER,INTEGER
Declare Long GdipCreateBitmapFromScan0 in GdiPlus.dll ;
    Integer width, Integer height, Integer stride, Long format, Long scan0, Long @ bitmap
Declare Long GdipGetImageGraphicsContext in GdiPlus.dll    Long image, Long @ graphics
DECLARE LONG GdipDeleteGraphics IN GDIPLUS LONG graphics
Declare Long GdipDrawImageRectI in GdiPlus.dll ;
    Long graphics, Long image, Integer x, Integer y, Integer width, Integer height
lpRect=REPLICATE(CHR(0),16)
= GetWindowRect(Hwnd,@lpRect)
x4=ctobin(SUBSTR(lpRect,9,4),'4rs')-ctobin(SUBSTR(lpRect,1,4),'4rs')
y4=ctobin(SUBSTR(lpRect,13,4),'4rs')-ctobin(SUBSTR(lpRect,5,4),'4rs')
m.hDesktopDc = GetDC( m.hWnd )
m.hVdc = CreateCompatibleDC( m.hDesktopDc )
m.hBitmap = CreateCompatibleBitmap( m.hDesktopDc,x4,y4 )
ABC=SelectObject( m.hVdc, m.hBitmap )
=PrintWindow(m.hWnd,m.hVdc,0)
m.hToken = 0
m.iInputBuf = PADR(CHR(1), 16, CHR(0))
m.iResult = -1
IF ( 0 == GdiplusStartup( @ m.hToken, @ m.iInputBuf, 0 ))
    m.hGdipBitmap = 0
    IF ( 0 == GdipCreateBitmapFromHBITMAP(m.hBitmap, 0, @ m.hGdipBitmap ))
        lnFormat=0x00021808  &&24
        graphics = 0
        resizedImage = 0
        =GdipCreateBitmapFromScan0(x4,y4, 0, m.lnFormat, 0, @resizedImage)
        =GdipGetImageGraphicsContext(m.resizedImage, @graphics)
        =GdipDrawImageRectI(m.graphics, m.hGdipBitmap,0,0,x4,y4)
        m.encoderClsid  = "{557CF40"+chr(47+(at(m.cFileExtName,"bmpjpggif      tifpng")+2)/3)+"-1A04-11D3-9A73-0000F81EF32E}"
        cEncoder= REPLICATE(CHR(0),16)
        CLSIDFromString(STRCONV(m.encoderClsid + CHR(0), 5), @cEncoder)
        m.iResult = GdipSaveImageToFile(m.resizedImage,STRCONV( m.tcFile+CHR(0), 5 ), @ m.cEncoder, 0 )
        GdipDeleteGraphics(graphics)
        GdipDisposeImage(m.resizedImage)
        GdipDisposeImage( m.hGdipBitmap )
    ENDIF
    GdiplusShutdown( m.hToken )
ENDIF
DeleteObject( m.abc)
DeleteObject( m.hBitmap )
DeleteDC( m.hVdc )
ReleaseDC( 0, m.hDesktopDc )
调用方法:=myjt(窗口句柄,欲保存的图像全称)
如:=myjt(_screen.hwnd,"_screen.bmp")
   =myjt(_vfp.hwnd,"_vfp.jpg")
以下是引用DANSON在2025-12-7 10:51:53的发言:

借花献佛:

https://bbs.bc-cn.net/viewthread.php?tid=514445&highlight=%BD%D8%CD%BC

3楼 sych 的代码,直接复用,完全OK!

2 小时前
快速回复:请问如何将已保存到粘贴板里的截图存为指定文件(如d:\1.jpg)
数据加载中...
 
   



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

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