DOBON.NET DOBON.NETプログラミング掲示板過去ログ

webbrowserで表示されたconfirmをコントロールしたい

環境/言語:[WinXP,C# Express 2010/2008]
分類:[.NET]

webbrowserを使って自動サーフィンをしようと思ってます。
(1)webbrowserでconfirmダイアログが表示されたことを検出したい
(2)上記confirmダイアログの情報(タイトル、メッセージ)を取得したい
(3)上記confirmダイアログにYes/Noの回答を与えたい(閉じたい)
(4)上記confirm表示中もPC操作可能な状態にしたい
 (アクティブフォームにむやみに{ENTER}を送るようなことはしたくない)
上記が実現できなくて悩んでいます。
ご回答お待ちしております。
■No26965に返信(雨蛙さんの記事)
> 上記が実現できなくて悩んでいます。
IDocHostShowUI インターフェイスについて調べてみてください。
下記は C# ではなく VB2005 での実装ですが、参考になるでしょうか?
http://yaplog.jp/orator/archive/81
2010/06/20(Sun) 15:51:20 編集(投稿者)

情報ありがとうございます。

直面した問題は以下の方法でなんとかなりました。
(かなり強引なところもありますが)

ご紹介いただいた方法はちょっと自分にはハードルが高そうなので
ゆっくり勉強させていただきます。
ありがとうございました。

<別解>

(1)webbrowserでターゲットページをnavigate
(2)DocumentCompletedを待つ

 ---ターゲットページ抜粋(ページにformは1つのみ)
 <form method="post" action="/action.php">
 <input type="hidden" name="x" value="0" />
 <input type="hidden" name="y" value="0" />
 <input type="submit" name="remove" value="1024" onclick="if (!confirm(削除しますか?')) { return false; }" />
 </form>
 ---

(3)formにC#で
<input type="hidden" name="remove" value="1024">
を追加する。

 [C#コード]
 HtmlElement input = webBrowser1.Document.CreateElement("input");
 input.SetAttribute("type", "hidden");
 input.SetAttribute("name", "remove");
 input.SetAttribute("value", "1024");
 HtmlElementCollection forms = webBrowser1.Document.GetElementsByTagName("form");
 forms[0].AppendChild(input);

(4)formをサブミットする。

 [C#コード(3)の続き]
 forms = webBrowser1.Document.GetElementsByTagName("form");
 forms[0].InvokeMember("submit");
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板