「VCS/ImgFileDownloader」の編集履歴(バックアップ)一覧はこちら
追加された行は緑色になります。
削除された行は赤色になります。
|開発環境|Microsoft Visual C# 2010 Express (SP1)|
|実行環境|Microsoft Windows XP Home Edition (SP3)|
|プロジェクトの種類|Windows フォーム アプリケーション|
|プロジェクト名|ImgFileDownloader|
コンテナー/Panel
名前:panel1
プロパティ:Dock:Top Size.Height:25
コンテナー/SplitContainer
名前:splitContainer1
プロパティ:Orientation:Horizontal
-panel1に以下のコントロールを追加。
コモン コントロール/TextBox
名前:textBox1
コモン コントロール/Button
名前:button1
プロパティ:Text:Navigate
コモン コントロール/Button
名前:button2
プロパティ:Text:Download
-splitContainer1.Panel1に以下のコントロールを追加。
コモン コントロール/WebBrowser
名前:webBrowser1
-splitContainer1.Panel2に以下のコントロールを追加。
コモン コントロール/TextBox
名前:textBox2
プロパティ:Dock:Fill Multiline:True ScrollBars:Vertical
Form1
プロパティ:AcceptButton:button1
以下のイベントを追加。
panel1_Resize
button1_Click
webBrowser1_Navigated
button2_Click
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)
{
string url = element.GetAttribute("href");
string ext = Path.GetExtension(url).ToLower();
if (extList.Contains(ext))
{
if (!urlList.Contains(url))
{
urlList.Add(url);
}
}
}
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 n = 0;
foreach (string url in urlList)
{
string path = "C:\\picture\\" + Path.GetFileName(url);
textBox2.AppendText(String.Format("{0}/{1} {2}\r\n", ++n, urlList.Count, path));
Application.DoEvents();
if (!File.Exists(path))
{
wc.DownloadFile(url, path);
Thread.Sleep(1000);
}
}
textBox2.AppendText("Complete");
}
}
}
}}
|開発環境|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);
}
}
}
}}