VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1516|回复: 11

获取客户端截屏并上传

[复制链接]

2

主题

5

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-1-10 10:00:01 | 显示全部楼层 |阅读模式
Asp.Net中怎么样在网页中获取客户端的截屏并上传?
回复

使用道具 举报

0

主题

322

帖子

115.00

积分

新手上路

Rank: 1

积分
115.00
发表于 2020-1-11 16:18:01 | 显示全部楼层
写个activex控件,利用widows的api函数 bitblt copy屏幕.保存成文件,然后上传.
回复

使用道具 举报

3

主题

29

帖子

22.00

积分

新手上路

Rank: 1

积分
22.00
发表于 2020-1-13 12:00:01 | 显示全部楼层
怎么总有人做的东西和我一样。
我是用VC++写了个ActiveX,拍下用户选择的区域,然后压缩成Jpeg,然后转成Base64,然后上传。
给你关键部分的代码:
HBITMAP CCopyScr::CopyToBmp(CRect Rect)
{
        // 屏幕和内存设备描述表
        HDC hScrDC, hMemDC;      

        // 位图句柄
        HBITMAP hBitmap, hOldBitmap;   

        // 选定区域坐标
        int nX, nY, nX2, nY2;      

        // 位图宽度和高度
        int nWidth, nHeight;      

        // 屏幕分辨率
        int xScrn, yScrn;         

        // 确保选定区域不为空矩形
        if (IsRectEmpty(&Rect))
                return NULL;

        //为屏幕创建设备描述表
        hScrDC = CreateDC("DISPLAY", NULL, NULL, NULL);
       
        //为屏幕设备描述表创建兼容的内存设备描述表
        hMemDC = CreateCompatibleDC(hScrDC);
       
        // 获得选定区域坐标
        nX = Rect.left;
        nY = Rect.top;
        nX2 = Rect.right;
        nY2 = Rect.bottom;
       
        // 获得屏幕分辨率
        xScrn = GetDeviceCaps(hScrDC, HORZRES);
        yScrn = GetDeviceCaps(hScrDC, VERTRES);
       
        //确保选定区域是可见的
        if (nX < 0)
                nX = 0;
        if (nY < 0)
                nY = 0;
        if (nX2 > xScrn)
                nX2 = xScrn;
        if (nY2 > yScrn)
                nY2 = yScrn;
        nWidth = nX2 - nX;
        nHeight = nY2 - nY;
       
        // 创建一个与屏幕设备描述表兼容的位图
        hBitmap = CreateCompatibleBitmap(hScrDC, nWidth, nHeight);
       
        // 把新位图选到内存设备描述表中
        hOldBitmap = (HBITMAP)SelectObject(hMemDC, hBitmap);
       
        // 把屏幕设备描述表拷贝到内存设备描述表中
        BitBlt(hMemDC, 0, 0, nWidth, nHeight, hScrDC, nX, nY, SRCCOPY);
       
        //得到屏幕位图的句柄
        hBitmap = (HBITMAP)SelectObject(hMemDC, hOldBitmap);
       
        //清除
        DeleteDC(hScrDC);
        DeleteDC(hMemDC);
       
        // 返回位图句柄
        return hBitmap;
}
回复

使用道具 举报

0

主题

29

帖子

19.00

积分

新手上路

Rank: 1

积分
19.00
发表于 2020-1-18 22:45:01 | 显示全部楼层
asp.net没有抓屏的组件。只能靠其他自定义的.dll咯,呵呵
回复

使用道具 举报

2

主题

5

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-1-20 15:45:01 | 显示全部楼层
有没有客户端脚本可以模拟 截屏 键
然后获取内容呢?
回复

使用道具 举报

0

主题

322

帖子

115.00

积分

新手上路

Rank: 1

积分
115.00
发表于 2020-1-20 20:09:02 | 显示全部楼层
有没有客户端脚本可以模拟 截屏 键
然后获取内容呢?
============
没有.
回复

使用道具 举报

0

主题

322

帖子

115.00

积分

新手上路

Rank: 1

积分
115.00
发表于 2020-1-20 20:27:01 | 显示全部楼层
如果有的话,用户就没有隐私可言了。
回复

使用道具 举报

3

主题

29

帖子

22.00

积分

新手上路

Rank: 1

积分
22.00
发表于 2020-1-20 22:45:01 | 显示全部楼层
如果有这样的脚本,那一定是个安全漏洞。

ActiveX能实现这个,因此ActiveX的安全性广受诟病。
回复

使用道具 举报

0

主题

73

帖子

27.00

积分

新手上路

Rank: 1

积分
27.00
发表于 2020-1-22 11:09:01 | 显示全部楼层
如果用VS开发,那么客户端应该也是要安装DotnetFramework的。
回复

使用道具 举报

2

主题

5

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-1-22 15:09:01 | 显示全部楼层
用c++,不想让用户安装任何东西,除了activex本身.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表