VerySource

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

如何在web里实现截屏功能啊??

[复制链接]

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-2-15 14:30:01 | 显示全部楼层 |阅读模式
在浏览器里如何实现截屏功能啊??
回复

使用道具 举报

0

主题

322

帖子

115.00

积分

新手上路

Rank: 1

积分
115.00
发表于 2020-4-15 18:00:01 | 显示全部楼层
必须利用activex控件。
回复

使用道具 举报

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-4-16 12:45:01 | 显示全部楼层
上楼能说的清楚些吗??
回复

使用道具 举报

0

主题

4

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-4-19 09:45:01 | 显示全部楼层
jf

using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Drawing.Imaging;
using System.Windows.Forms;

namespace windelf
...{
    class Program
    ...{
        static void Main(string[] args)
        ...{
                //获得当前屏幕的分辨率
            Screen scr = Screen.PrimaryScreen;
            Rectangle rc = scr.Bounds;
            int iWidth = rc.Width;   
            int iHeight = rc.Height;
                //创建一个和屏幕一样大的Bitmap
            Image myImage = new Bitmap(iWidth, iHeight);
                //从一个继承自Image类的对象中创建Graphics对象
            Graphics g = Graphics.FromImage(myImage);
                //抓屏并拷贝到myimage里
            g.CopyFromScreen(new Point(0, 0), new Point(0, 0), new Size(iWidth, iHeight));
                //保存为文件
            myImage.Save(@"c:/windelf.jpeg");

        }

    }
}
回复

使用道具 举报

1

主题

6

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-4-20 16:45:01 | 显示全部楼层
windelf
人家要的是web的,不是winform
回复

使用道具 举报

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-4-21 14:15:01 | 显示全部楼层
是啊!是在web里的!!不是在winform里的!!
回复

使用道具 举报

0

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-4-23 14:00:01 | 显示全部楼层
azraelmoon 、0liujians
这样的需求单靠Web是无法做到的,随便让你截屏客户端还哪有安全性?
只能靠ActiveX或嵌入WinForm实现。
回复

使用道具 举报

3

主题

29

帖子

22.00

积分

新手上路

Rank: 1

积分
22.00
发表于 2020-4-23 18:30:02 | 显示全部楼层
你是不是以前问过,只能用ActiveX。因为安全性的问题,web不允许有这个功能(安全沙箱),ActiveX能实现,所以ActiveX的安全性广受诟病。
下面是VC++写的ActiveX的关键代码,用C#应该更容易,但客户端运行ActiveX不知道需不需要安装Framework。
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

主题

13

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
发表于 2020-6-3 18:30:01 | 显示全部楼层
楼主说的截屏是什么意思?我发的连接中的文章是说如何在asp.net程序中抓取某个网站的页面生成图片,楼主如果是要抓取客户端的屏幕,那你只能用activeX控件了,或者网页内嵌入winform控件,但那需要调整客户端安全设置,否则没有权限。
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-8-14 09:00:02 | 显示全部楼层
如果截取web客户端当前屏幕,不用activex恐怕不行
回复

使用道具 举报

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

本版积分规则

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

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