/* WebBrowserコントロールによるWebアクセス 2006/ 7/19 宍戸 輝光 */ using System; using System.Drawing; using System.Windows.Forms; public class WebApp:Form { Panel m_plControls; TextBox m_tbUrl; Button m_btSrc, m_btLinks; WebBrowser m_wbDoc; TextBox m_tbView; public WebApp() { // アドレス欄とボタン類を置くパネル生成 m_plControls = new Panel(); m_plControls.Height = 32; // アドレス欄のTextBox生成 m_tbUrl = new TextBox(); m_tbUrl.Width = 240; m_tbUrl.Top = (m_plControls.Height / 2) - (m_tbUrl.Height / 2); m_tbUrl.KeyDown += new KeyEventHandler(UrlKeyDown); m_plControls.Controls.Add(m_tbUrl); // ページソース表示ボタン作成 m_btSrc = new Button(); m_btSrc.Text = "文書ソース"; m_btSrc.Left = m_tbUrl.Bounds.Right + 4; m_btSrc.Top = (m_plControls.Height / 2) - (m_btSrc.Height / 2); m_btSrc.Click += new EventHandler(SrcClick); m_plControls.Controls.Add(m_btSrc); // ページ内リンク一覧表示ボタン作成 m_btLinks = new Button(); m_btLinks.Text = "リンク一覧"; m_btLinks.Left = m_btSrc.Bounds.Right + 4; m_btLinks.Top = (m_plControls.Height / 2) - (m_btLinks.Height / 2); m_btLinks.Click += new EventHandler(LinksClick); m_plControls.Controls.Add(m_btLinks); Controls.Add(m_plControls); // WebBrowser生成 m_wbDoc = new WebBrowser(); // DocumentCompletedイベントハンドラ登録 m_wbDoc.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(DocCompleted); Controls.Add(m_wbDoc); // ページソースやリンク一覧表示用TextBox生成 m_tbView = new TextBox(); m_tbView.Multiline = true; m_tbView.Height = 64; Controls.Add(m_tbView); ClientSize = new Size(640, 480); } // ウインドウサイズ変更時 protected override void OnResize(EventArgs e) { m_plControls.Width = ClientSize.Width; int iDocWidth = ClientSize.Width; int iDocHeight = ClientSize.Height - (m_plControls.Height + m_tbView.Height); m_wbDoc.Size = new Size(iDocWidth, iDocHeight); m_wbDoc.Top = m_plControls.Top + m_plControls.Height; m_tbView.Width = ClientSize.Width; m_tbView.Top = m_wbDoc.Top + m_wbDoc.Height; } public void UrlKeyDown(Object sender, KeyEventArgs e) { // Enterキーでページ移動 if (e.KeyCode == Keys.Enter) { m_wbDoc.Navigate(m_tbUrl.Text); } } // DocumentCompletedイベントハンドラ public void DocCompleted(Object sender, WebBrowserDocumentCompletedEventArgs e) { // アドレス欄に読み込んだページのURL設定 m_tbUrl.Text = m_wbDoc.Document.Url.ToString(); } // 「文書ソース表示」ボタンクリック時 public void SrcClick(Object sender, EventArgs e) { m_tbView.Text = m_wbDoc.DocumentText; } // 「リンク一覧」ボタンクリック時 public void LinksClick(Object sender, EventArgs e) { // 現在のページ内リンクのコレクション取得 HtmlElementCollection hecList = m_wbDoc.Document.Links; String stView = ""; int i = 0; // リンクのコレクションからURLリスト文字列作成 foreach (HtmlElement elm in hecList) { // HTML要素のhref(リンク先)属性処理 if (elm.GetAttribute("href") != null) { stView += i.ToString(); stView += " - " + elm.GetAttribute("href").ToString(); stView += "\r\n"; i++; } } m_tbView.Text = stView; } [STAThread] public static void Main() { WebApp app = new WebApp(); Application.Run(app); } }