|開発環境|Microsoft Visual Studio Express 2013 for Windows Desktop| |実行環境|Microsoft Windows 8.1 (64bit)| |プロジェクトの種類|Visual C#/Windows フォーム アプリケーション| |プロジェクト名|ImgFileDownloader| #table_zebra(project, #fff, #ddd) コンテナー/Panel (Name):panel1 プロパティ:Dock=Top/Size.Height=25 コンテナー/SplitContainer (Name):splitContainer1 プロパティ:Orientation=Horizontal -panel1に以下のコントロールを追加。 コモン コントロール/TextBox (Name):textBox1 コモン コントロール/Button (Name):button1 プロパティ:Text=Navigate コモン コントロール/Button (Name):button2 プロパティ:Text=Download -splitContainer1.Panel1に以下のコントロールを追加。 コモン コントロール/WebBrowser (Name):webBrowser1 プロパティ:ScriptErrorsSuppressed=True -splitContainer1.Panel2に以下のコントロールを追加。 コモン コントロール/TextBox (Name):textBox2 プロパティ:Dock=Fill/Multiline=True/ScrollBars=Vertical Form1 プロパティ:AcceptButton=button1 以下のイベントを追加。(プロパティのツールバーからイベントを選択) panel1_Resize ※splitContainer1.Panel1ではない button1_Click webBrowser1_Navigated button2_Click Form1の大きさやsplitContainer1の分割線を適当に調節する。 Form1.cs #highlight(c#){{ using System; using System.Collections.Generic; using System.IO; using System.Net; using System.Threading; using System.Windows.Forms; namespace ImgFileDownloader { public partial class Form1 : Form { readonly List<string> extList = new List<string> { ".jpg", ".gif", ".png", ".jpeg" }; List<string> urlList; public Form1() { InitializeComponent(); PanelResize(); textBox1.Text = "http://www.google.co.jp/"; } void PanelResize() { button2.Left = panel1.Right - button2.Width; button1.Left = button2.Left - button1.Width; textBox1.Width = button1.Left; } private void panel1_Resize(object sender, EventArgs e) { PanelResize(); } // Navigate private void button1_Click(object sender, EventArgs e) { string urlString = textBox1.Text; webBrowser1.Navigate(urlString); } private void webBrowser1_Navigated(object sender, WebBrowserNavigatedEventArgs e) { Text = webBrowser1.Document.Title + " - ImgFileDownloader"; textBox1.Text = webBrowser1.Url.ToString(); urlList = new List<string>(); foreach (HtmlElement element in webBrowser1.Document.Links) { try { string path = element.GetAttribute("href"); Uri uri = new Uri(path); path = uri.GetLeftPart(UriPartial.Path); string ext = Path.GetExtension(path).ToLower(); if (extList.Contains(ext)) { if (!urlList.Contains(path)) { urlList.Add(path); } } } catch (System.Exception ex) { } } textBox2.Text = String.Join("\r\n", urlList); textBox2.AppendText("\r\nCount=" + urlList.Count); } // Download private void button2_Click(object sender, EventArgs e) { WebClient wc = new WebClient(); textBox2.Text = ""; textBox2.HideSelection = false; int count = 0; foreach (string url in urlList) { string path = "C:\\picture\\" + Path.GetFileName(url); // 適当なディレクトリを指定する textBox2.AppendText(String.Format("{0}/{1} {2}\r\n", ++count, urlList.Count, path)); if (!File.Exists(path)) { try { wc.DownloadFile(url, path); } catch { } for (int n = 0; n < 100; n++) { Application.DoEvents(); Thread.Sleep(10); } } } textBox2.AppendText("Complete: " + webBrowser1.Document.Title); } } } }}