質問者
webBrowserで自動表示

質問
-
FormにwebBrowserコントロールとボタンを配置します。
Loadイベントで http://www.aaa.・・・を表示します。このページには ボタンが配置されておりそれをクリックすることで、別ページが表示され、情報を見ることができます。
これを、自動化して 印刷して終了したいのですが 実現できますでしょうか?
private void btnRead_Click( object sender, EventArgs e )
{
webBrowser1.Focus(); -----①webBrowser1.Select();-----②
SendKeys.SendWait( "{TAB}" );
SendKeys.SendWait( "{TAB}" );
SendKeys.SendWait( "{TAB}" );
SendKeys.SendWait( "{ENTER}" );
}
今、上記のコードでやろうとしていますが、一度webBrowserコントロールをマウスでクリックしないと 動いてくれません。
すべての返信
-
そのボタンのName属性って分かりますか?
たとえば
<input type="button" name="prtBtn" value="印刷">
といった具合なら prtBtnってのがそれに当るんですが
プロジェクトに COMの 『Microsoft HTML Object libraly』の参照を追加して
mshtml.IHTMLDocument3 doc = (mshtml.IHTMLDocument3)webBrowser1.Document.DomDocument;
doc.getElementById("prtBtn").click();
といった具合にすればボタンを押すことが可能ですよ
コレならブラウザコントロールをクリックしなくてもいいはずでけど ・・・
-
今回クリックしようとしているボタンは
<FORM method="post" action="/login.do">
<p><a href="BLOCKED SCRIPTCH2()"><img border="0" src="images/yuho_enter.gif" width="200" height="40"></a></p>
<input type="hidden" name="loginType" value="1">
<input type="hidden" name="b_type">
</FORM>こんな感じです。Name属性 が わかりません。
-
このHTML要素のAタグをクリックなら
ファイルの冒頭で using mshtml; を記述して ボタンのクリックイベントに
// ドキュメントを取得
IHTMLDocument3 doc = (IHTMLDocument3)webBrowser1.Document.DomDocument;
// 名前の分かっている要素取得
DispHTMLInputElement btnH1 = (DispHTMLInputElement)doc.getElementById("loginType");
// フォームを取得
DispHTMLFormElement oFrm = (DispHTMLFormElement)btnH1.parentElement;
// フォームの子要素のコレクションを取得
IHTMLElementCollection oChild = (IHTMLElementCollection)oFrm.children;
// 子要素の最初のアイテムを取得
DispHTMLAnchorElement oAc = (DispHTMLAnchorElement)oChild.item(null, 0);
oAc.click();
といった具合で上手くいくようです
参考になれば幸いです