0

このコードを使用しています:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Drawing.Imaging;
namespace DownloadFlashFiles
{
    public partial class Form1 : Form
    {
        int i = 0;
        public Form1()
        {
            InitializeComponent();
            GenerateScreenshot("http://www.nana10.co.il");


        }

        private void Form1_Load(object sender, EventArgs e)
        {
        }
        public Bitmap GenerateScreenshot(string url)
        {
            // This method gets a screenshot of the webpage
            // rendered at its full size (height and width)
            return GenerateScreenshot(url, -1, -1);
        }
        public Bitmap GenerateScreenshot(string url, int width, int height)
        {
            // Load the webpage into a WebBrowser control
            //WebBrowser wb = new WebBrowser();
            webBrowser1.ScrollBarsEnabled = false;
            webBrowser1.ScriptErrorsSuppressed = true;
            webBrowser1.Navigate(url);
            while (webBrowser1.ReadyState != WebBrowserReadyState.Complete) { Application.DoEvents(); }
            // Set the size of the WebBrowser control
            webBrowser1.Width = width;
            webBrowser1.Height = height;
            if (width == -1)
            {
                // Take Screenshot of the web pages full width
                webBrowser1.Width = webBrowser1.Document.Body.ScrollRectangle.Width;
            }
            if (height == -1)
            {
                // Take Screenshot of the web pages full height
                webBrowser1.Height = webBrowser1.Document.Body.ScrollRectangle.Height;
            }
            // Get a Bitmap representation of the webpage as it's rendered in the WebBrowser control
            Bitmap bitmap = new Bitmap(webBrowser1.Width, webBrowser1.Height);
            webBrowser1.DrawToBitmap(bitmap, new Rectangle(0, 0, webBrowser1.Width, webBrowser1.Height));
            //webBrowser1.Dispose();
            return bitmap;
        }
        private void timer1_Tick(object sender, EventArgs e)
        {
            i++;
            Bitmap thumbnail = GenerateScreenshot("http://www.nana10.co.il");
            thumbnail.Save(@"d:\test4\" + i.ToString("D6") + "bmp", ImageFormat.Bmp);
        }
        private void button1_Click(object sender, EventArgs e)
        {
            timer1.Start();
        }

    }
}

問題は、ボタンをクリックすると、WerBrowserのコンテンツが毎秒読み込まれるのを確認できますが、次の行のWhileループでスタックしているため、timer1ティックイベント内のコードに到達しません。

while (webBrowser1.ReadyState != WebBrowserReadyState.Complete) { Application.DoEvents(); }

私が欲しいのは、毎秒Webブラウザに新しいコンテンツをロードし、毎秒Webブラウザからハードディスクに新しいコンテンツを保存することです。

Whileループでスタックしているので、どうすればよいですか?

4

1 に答える 1

0

それがあなたを助けるなら、これをチェックしてください、最初のリンクはあなたが望むことをします

http://www.codeproject.com/Articles/15211/Webpage-thumbnailer

http://social.msdn.microsoft.com/Forums/en-US/csharplanguage/thread/d9b69701-85ba-439c-9737-e36f78f65acf/

于 2012-12-28T06:04:19.047 に答える