CSharp/WebBrowser
をテンプレートにして作成
Land.to
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
*WebBrowser [#y6727773]
フォーム上にブラウザを実装できるWebBrowserコントロールを...
#contents();
**URLを開く [#je50e909]
Navigateメソッドを使用することで指定したURLを開くことがで...
URLを文字列で与える場合。
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Navigate(textBox1.Text);
}
例外:
-[[InvalidOperationException>.NET Framework/Exception#y18...
-[[ObjectDisposedException>.NET Framework/Exception#wf45e...
**ページ取得完了のチェック [#na80a123]
***イベントを使う [#x714b88a]
OnDocumentCompleted()イベントが発生するので、これを捕捉す...
ページにフレームが使用されている場合は、それぞれでこのイ...
対象ページに対するイベントなのかどうかは自分で判断する必...
private void webBrowser1_DocumentCompleted(object sender...
{
if (e.Url.ToString() == "http://www...")
{
}
}
ただし強制リダイレクトされるページについては、変数eはリダ...
***ポーリングを使う [#l172c818]
WebBrowser.IsBusyプロパティだけでは十分でないので、WebBro...
while (webBrowser1.IsBusy || webBrowser1.ReadyState != W...
{
System.Threading.Thread.Sleep(50);
System.Windows.Forms.Application.DoEvents();
}
***検出できないケース [#occ7dab0]
当たり前といえば当たり前だが、
例えばフォームでsubmitイベントを使用し、JavaScriptでクラ...
そのスクリプトを自前で用意している場合は、hiddenで処理中...
**そのHTMLソースを得る [#g5483ace]
表示中のURLのソースを得るには次のようにする。
HtmlDocument doc = webBrowser1.Document;
String src = doc.GetElementsByTagName("html")[0].Out...
他の方法もある。こっちの方がシンプル。
HtmlDocument doc = webBrowser1.Document;
String src = doc.Body.outerhtml;
DocumentTextから直接取得すると、文字コードが解決される前...
**HTMLを表示する [#eb6bd410]
HTMLを直接与えて表示することができます。
private void button4_Click(object sender, EventArgs e)
{
string html = textBox2.Text;
webBrowser1.DocumentText = html;
}
例外:
-[[InvalidOperationException>.NET Framework/Exception#y18...
-[[ObjectDisposedException>.NET Framework/Exception#wf45e...
**フォームに入力する [#se22d978]
例えば下記のようなHTMLだった場合、
<form action="LoginDo" method="post">
<input name="ID" type="text" maxlength="10" value="">
<input name="PASS" type="password" maxlength="20" value=...
<input type="submit" value="ログイン">
</form>
以下のようにすることで、
テキストフォームに値を書き込んで、Submitボタン押下したの...
HtmlDocument doc = webBrowser1.Document;
doc.All.GetElementsByName("ID")[0].SetAttribute("value",...
doc.All.GetElementsByName("PASS")[0].SetAttribute("value...
doc.Forms[0].InvokeMember("submit");
**フレームのあるサイト [#k51c19a5]
複数のフレームから成るWebページの場合は、次のようにしてフ...
HtmlDocument doc = webBrowser1.Document; // 大元のページ
int count = doc.Window.Frames.Count; // 含まれるフ...
HtmlWindow win0 = doc.Window.Frames[0]; // 1番目のフ...
HtmlDocument doc0 = win0.Document; // 1番目のフ...
HtmlDocument doc1 = doc.Window.Frames[1].Document; ...
HtmlDocument doc2 = doc.Window.Frames["abc"].Document; ...
入れ子構造になっているので再帰的にFrames[]を探索すれば、
総てのフレームの構造を得ることが出来る。
フレーム自身の定義は次のように取得できる。
HtmlElement el = win0.WindowFrameElement;
String elHtml = el.OuterHtml;
このelHtmlは下記のようなタグの記述形式で得られる。
<FRAME name=logo src=\"title.html\">
**要素のツリー構造を得る [#gf4c99e1]
-HtmlElementにはChildrenプロパティがあり、自身の直下の要...
-この要素の集合を管理しているのはHtmlElementCollectionク...
-HtmlElement.Childrenを再帰的にたどることにより、HTML全体...
***各要素のタグ名や属性を得る [#k52456a3]
-TagNameプロパティでタグ名を、getAttribute()メソッドでタ...
--<A href="xxxx">というタグのHtmlElementであれば、TagName...
***要素をドキュメントから削除したい [#vc706fc4]
-要素をドキュメントから削除したいときは、OuterHTMLプロパ...
el.OuterHtml = "";
***新しい要素をドキュメントに追加したい [#b9fe001d]
-新しい要素を、HtmlDocument#CreateElement()メソッドで作成...
-必要に応じて属性などを加える。
-親要素のAppendChild()メソッドでその配下に追加される。
HtmlElement el = webBrowser1.Document.CreateElement("A");
el.SetAttribute("HREF", "http://www.yahoo.co.jp");
el.InnerText = "Yahooサイトへ";
webBrowser1.Document.Body.AppendChild(el);
***要素をドキュメント内で移動したい [#t859631d]
-移動先の親要素のAppendChild()メソッドでその配下に追加す...
:HtmlElement.AppendChild メソッド|http://msdn.microsoft.c...
**参考URL [#f3ac8cfc]
:WebBrowserコントロールによりWebページからリンクや画像を...
:WebBrowserコントロールからフレームを利用したのページのHT...
:.NET TIPS WebClientクラスでGETメソッドによりクエリ文字列...
:.NET TIPS WebClientクラスでWebページを取得するには?|htt...
:.NET TIPS [[WebRequest>System.Net.WebRequest]]/[[WebRes...
:.NET TIPS [[WebRequest>System.Net.WebRequest]]/[[WebRes...
:Visual C# 2005 または Visual C# .NET で WebBrowser コン...
:WebBrowserコントロールにYahoo!ログインページを表示し、自...
:MSN相談箱 VB2005、WebBrowserにてログインが成功したか失...
:.NET Framework クラス ライブラリ HtmlDocument クラス|htt...
:.NET Framework クラス ライブラリ HtmlElementCollection ...
:.NET Framework クラス ライブラリ HtmlElement クラス|http...
終了行:
*WebBrowser [#y6727773]
フォーム上にブラウザを実装できるWebBrowserコントロールを...
#contents();
**URLを開く [#je50e909]
Navigateメソッドを使用することで指定したURLを開くことがで...
URLを文字列で与える場合。
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Navigate(textBox1.Text);
}
例外:
-[[InvalidOperationException>.NET Framework/Exception#y18...
-[[ObjectDisposedException>.NET Framework/Exception#wf45e...
**ページ取得完了のチェック [#na80a123]
***イベントを使う [#x714b88a]
OnDocumentCompleted()イベントが発生するので、これを捕捉す...
ページにフレームが使用されている場合は、それぞれでこのイ...
対象ページに対するイベントなのかどうかは自分で判断する必...
private void webBrowser1_DocumentCompleted(object sender...
{
if (e.Url.ToString() == "http://www...")
{
}
}
ただし強制リダイレクトされるページについては、変数eはリダ...
***ポーリングを使う [#l172c818]
WebBrowser.IsBusyプロパティだけでは十分でないので、WebBro...
while (webBrowser1.IsBusy || webBrowser1.ReadyState != W...
{
System.Threading.Thread.Sleep(50);
System.Windows.Forms.Application.DoEvents();
}
***検出できないケース [#occ7dab0]
当たり前といえば当たり前だが、
例えばフォームでsubmitイベントを使用し、JavaScriptでクラ...
そのスクリプトを自前で用意している場合は、hiddenで処理中...
**そのHTMLソースを得る [#g5483ace]
表示中のURLのソースを得るには次のようにする。
HtmlDocument doc = webBrowser1.Document;
String src = doc.GetElementsByTagName("html")[0].Out...
他の方法もある。こっちの方がシンプル。
HtmlDocument doc = webBrowser1.Document;
String src = doc.Body.outerhtml;
DocumentTextから直接取得すると、文字コードが解決される前...
**HTMLを表示する [#eb6bd410]
HTMLを直接与えて表示することができます。
private void button4_Click(object sender, EventArgs e)
{
string html = textBox2.Text;
webBrowser1.DocumentText = html;
}
例外:
-[[InvalidOperationException>.NET Framework/Exception#y18...
-[[ObjectDisposedException>.NET Framework/Exception#wf45e...
**フォームに入力する [#se22d978]
例えば下記のようなHTMLだった場合、
<form action="LoginDo" method="post">
<input name="ID" type="text" maxlength="10" value="">
<input name="PASS" type="password" maxlength="20" value=...
<input type="submit" value="ログイン">
</form>
以下のようにすることで、
テキストフォームに値を書き込んで、Submitボタン押下したの...
HtmlDocument doc = webBrowser1.Document;
doc.All.GetElementsByName("ID")[0].SetAttribute("value",...
doc.All.GetElementsByName("PASS")[0].SetAttribute("value...
doc.Forms[0].InvokeMember("submit");
**フレームのあるサイト [#k51c19a5]
複数のフレームから成るWebページの場合は、次のようにしてフ...
HtmlDocument doc = webBrowser1.Document; // 大元のページ
int count = doc.Window.Frames.Count; // 含まれるフ...
HtmlWindow win0 = doc.Window.Frames[0]; // 1番目のフ...
HtmlDocument doc0 = win0.Document; // 1番目のフ...
HtmlDocument doc1 = doc.Window.Frames[1].Document; ...
HtmlDocument doc2 = doc.Window.Frames["abc"].Document; ...
入れ子構造になっているので再帰的にFrames[]を探索すれば、
総てのフレームの構造を得ることが出来る。
フレーム自身の定義は次のように取得できる。
HtmlElement el = win0.WindowFrameElement;
String elHtml = el.OuterHtml;
このelHtmlは下記のようなタグの記述形式で得られる。
<FRAME name=logo src=\"title.html\">
**要素のツリー構造を得る [#gf4c99e1]
-HtmlElementにはChildrenプロパティがあり、自身の直下の要...
-この要素の集合を管理しているのはHtmlElementCollectionク...
-HtmlElement.Childrenを再帰的にたどることにより、HTML全体...
***各要素のタグ名や属性を得る [#k52456a3]
-TagNameプロパティでタグ名を、getAttribute()メソッドでタ...
--<A href="xxxx">というタグのHtmlElementであれば、TagName...
***要素をドキュメントから削除したい [#vc706fc4]
-要素をドキュメントから削除したいときは、OuterHTMLプロパ...
el.OuterHtml = "";
***新しい要素をドキュメントに追加したい [#b9fe001d]
-新しい要素を、HtmlDocument#CreateElement()メソッドで作成...
-必要に応じて属性などを加える。
-親要素のAppendChild()メソッドでその配下に追加される。
HtmlElement el = webBrowser1.Document.CreateElement("A");
el.SetAttribute("HREF", "http://www.yahoo.co.jp");
el.InnerText = "Yahooサイトへ";
webBrowser1.Document.Body.AppendChild(el);
***要素をドキュメント内で移動したい [#t859631d]
-移動先の親要素のAppendChild()メソッドでその配下に追加す...
:HtmlElement.AppendChild メソッド|http://msdn.microsoft.c...
**参考URL [#f3ac8cfc]
:WebBrowserコントロールによりWebページからリンクや画像を...
:WebBrowserコントロールからフレームを利用したのページのHT...
:.NET TIPS WebClientクラスでGETメソッドによりクエリ文字列...
:.NET TIPS WebClientクラスでWebページを取得するには?|htt...
:.NET TIPS [[WebRequest>System.Net.WebRequest]]/[[WebRes...
:.NET TIPS [[WebRequest>System.Net.WebRequest]]/[[WebRes...
:Visual C# 2005 または Visual C# .NET で WebBrowser コン...
:WebBrowserコントロールにYahoo!ログインページを表示し、自...
:MSN相談箱 VB2005、WebBrowserにてログインが成功したか失...
:.NET Framework クラス ライブラリ HtmlDocument クラス|htt...
:.NET Framework クラス ライブラリ HtmlElementCollection ...
:.NET Framework クラス ライブラリ HtmlElement クラス|http...
ページ名: