1、在窗体上加一个按钮,为按钮添加点击事件

        private void button1_Click(object sender, EventArgs e)
{
Bitmap m_Bitmap = WebSiteThumbnail.GetWebSiteThumbnail("http://192.168.0.106:1452/", , , , );
//保存图片 JPG、GIF、PNG等均可
m_Bitmap.Save("F:/Image/" + DateTime.Now.Year.ToString()
+ DateTime.Now.Month.ToString()
+ DateTime.Now.Day.ToString()
+ DateTime.Now.Hour.ToString()
+ DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString()
+ ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
}

2、在点击事件中调用了WebSiteThumbnail中的方法,该类的代码如下:

public class WebSiteThumbnail
{
Bitmap m_Bitmap;
string m_Url;
int m_BrowserWidth, m_BrowserHeight, m_ThumbnailWidth, m_ThumbnailHeight; public WebSiteThumbnail(string Url, int BrowserWidth, int BrowserHeight, int ThumbnailWidth, int ThumbnailHeight)
{
m_Url = Url;
m_BrowserHeight = BrowserHeight;
m_BrowserWidth = BrowserWidth;
m_ThumbnailWidth = ThumbnailWidth;
m_ThumbnailHeight = ThumbnailHeight;
}
public static Bitmap GetWebSiteThumbnail(string Url, int BrowserWidth, int BrowserHeight, int ThumbnailWidth, int ThumbnailHeight)
{
WebSiteThumbnail thumbnailGenerator = new WebSiteThumbnail(Url, BrowserWidth, BrowserHeight, ThumbnailWidth, ThumbnailHeight);
return thumbnailGenerator.GenerateWebSiteThumbnailImage();
}
public Bitmap GenerateWebSiteThumbnailImage()
{
Thread m_thread = new Thread(new ThreadStart(_GenerateWebSiteThumbnailImage));
m_thread.SetApartmentState(ApartmentState.STA);
m_thread.Start();
m_thread.Join();
return m_Bitmap;
}
private void _GenerateWebSiteThumbnailImage()
{
WebBrowser m_WebBrowser = new WebBrowser();
m_WebBrowser.ScrollBarsEnabled = false;
m_WebBrowser.Navigate(m_Url);
m_WebBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(WebBrowser_DocumentCompleted);
while (m_WebBrowser.ReadyState != WebBrowserReadyState.Complete)
Application.DoEvents();
m_WebBrowser.Dispose();
}
private void WebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
WebBrowser m_WebBrowser = (WebBrowser)sender;
m_WebBrowser.ClientSize = new Size(this.m_BrowserWidth, this.m_BrowserHeight);
m_WebBrowser.ScrollBarsEnabled = false;
//获取网页文档对象,相当于获取网页的全部源码
HtmlDocument htmlDoc = m_WebBrowser.Document;
HtmlElement btn = htmlDoc.GetElementById("Login1_LoginButton");
if (btn != null)
{
//设置帐号
HtmlElement username = htmlDoc.GetElementById("Login1_UserName"); username.SetAttribute("value", "system");
//设置密码
HtmlElement pwd = htmlDoc.GetElementById("Login1_Password");
pwd.SetAttribute("value", ""); //登录
if (btn != null)
{
btn.InvokeMember("Click"); }
//进入后的网址
m_WebBrowser.Navigate("http://192.168.0.106:1452/Manager.aspx");
Thread.Sleep();
m_Bitmap = new Bitmap(m_WebBrowser.Bounds.Width, m_WebBrowser.Bounds.Height);
m_WebBrowser.BringToFront();
HtmlDocument document = m_WebBrowser.Document;
document.Window.ScrollTo(, );
m_WebBrowser.DrawToBitmap(m_Bitmap, new Rectangle(new Point(, ), new Size(, ))); }
else
{
m_Bitmap = new Bitmap(m_WebBrowser.Bounds.Width, m_WebBrowser.Bounds.Height);
m_WebBrowser.BringToFront();
HtmlDocument document = m_WebBrowser.Document;
document.Window.ScrollTo(, );
m_WebBrowser.DrawToBitmap(m_Bitmap, new Rectangle(new Point(, ), new Size(, ))); }
} }

C# 模拟网站登陆并截图的更多相关文章

  1. python urllib2 模拟网站登陆

    python urllib2 模拟网站登陆 1. 可用浏览器先登陆,然后查看网页源码,分析登录表单 2. 使用python urllib2,cookielib 模拟网页登录 import urllib ...

  2. C# 模拟网站登陆

    实现此功能首先需要借助一些抓包工具,对相应的网站登陆过程进行分析,此过程根据网站的不同,可能复杂,也可能很简单.常用的抓包工具FF下FireBug和IE下的HttpWatch.这两个工具很强大,以此工 ...

  3. python模拟网站登陆-滑动验证码

    普通滑动验证 以http://admin.emaotai.cn/login.aspx为例这类验证码只需要我们将滑块拖动指定位置,处理起来比较简单.拖动之前需要先将滚动条滚动到指定元素位置. impor ...

  4. 模拟Post登陆带验证码的网站

    前言: 作者在一个项目需求 模拟用户登陆,获取该用户的订单记录. 该系统需要用户名,密码,验证码 (验证码为正楷的数字4位),于是参考网络一些文章,并进行了很多测试,总结步骤如下: 步骤1 : 通过h ...

  5. cookielib和urllib2模块相结合模拟网站登录

    1.cookielib模块 cookielib模块的主要作用是提供可存储cookie的对象,以便于与urllib2模块配合使用来访问Internet资源.例如可以利用 本模块的CookieJar类的对 ...

  6. curl模拟自动登陆&采集网页数据

    <!DOCTYPE> <html> <head> <meta http-equiv="Content-Type" content=&quo ...

  7. HttpClient4的使用,模拟浏览器登陆新浪微博,发表微博和文字+图片微博

    HttpClient4,最原始的需求就是使用其来模拟浏览器想服务器发起http请求,当然,他的功能不止于此,但是我需要的就是这个功能而已,jdk也有其自带的类似的api:UrlConnection,效 ...

  8. Java模拟新浪微博登陆抓取数据

    前言:  兄弟们来了来了,最近有人在问如何模拟新浪微博登陆抓取数据,我听后默默地抽了一口老烟,暗暗的对自己说,老汉是时候该你出场了,所以今天有时间就整理整理,浅谈一二. 首先:  要想登陆新浪微博需要 ...

  9. jQuery数字滚动(模拟网站人气、访问量递增)原创

    插件描述:实现数字上下滚动,模拟网站人气.访问量递增的动画效果,兼容性如下: 使用方法 $(el).runNum(val,params);   参数详解 val:数值型(默认70225800): pa ...

随机推荐

  1. 表达式求值(二叉树方法/C++语言描述)(一)

    使用二叉树对算数表达式(以下简称为表达式)进行求值,实质上是将表达式转换为二叉树,对其进行后序遍历,得到后缀表达式的同时可以求得表达式的值.转换和求值的过程也需要借助数据结构栈的帮助. 二叉树数据结构 ...

  2. com.mysql.jdbc.exceptions.MySQLSyntaxErrorException错误

    com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the ...

  3. NYOJ 128 前缀表达式的计算

    前缀式计算 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 先说明一下什么是中缀式: 如2+(3+4)*5这种我们最常见的式子就是中缀式. 而把中缀式按运算顺序加上括 ...

  4. WordCount去除标点方法之一

    package com.bw.day10;import java.io.IOException;import java.util.StringTokenizer;import org.apache.h ...

  5. Swift学习之方法定义参数有默认值的时候

    func testParms(first fir:String, options opt:JSONSerialization.ReadingOptions = []) -> Bool { ret ...

  6. 验证码的Java实现--jsp

    <%@ page language="java" pageEncoding="UTF-8" %> <%@ page contentType=& ...

  7. python web环境相关

    一. apache配置与支持cgi 1. 配置文件 Apache是一个后台运行的程序,没有界面.所有的配置,都包含在配置文件里.主配置文件是: ~\Apache\conf\httpd.conf 如果要 ...

  8. mac监听Dock激活程序

    mac监听Dock激活程序 涉及库添加: LIBS += -framework CoreFoundation -framework Carbon -lobjc 涉及头文件: #include < ...

  9. flex详解

    布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂直居中就不容易实现. 一.Flex布局是什么? Flex ...

  10. JVM(一)JVM的基本结构

    JVM基本结构 一 JVM基本结构示意图 二 JVM结构详解 一 程序计数器 程序计数器是一块较小的内存空间,它是当前线程所执行的字节码的行号指示器,如果线程执行的是一个Java方法,这个计数器记录的 ...