none
webBrowserで自動表示 RRS feed

  • 質問

  • 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コントロールをマウスでクリックしないと 動いてくれません。

    2007年7月14日 3:05

すべての返信

  • WebBrowserに表示されたとおり印刷するなら WebBrowserのPrintメソッドでいけるのでありませんか

    どうして SendKeysで TAB3回送信し、Enterを送信してるのでしょう

     

    別のボタンなどへフォーカスを移動してるのでしょうか

     

    もしかして 表示されたページ内にあるボタンを押したいってことですか?

    そのあたりを具体的に説明してみましょう

    2007年7月14日 4:03
  • 返信ありがとうございます。
    redfox63さんのお察しの通り

     

    このページには ボタンが配置されておりそれをクリックすることで、別ページが表示され、情報を見ることができます

     

    印刷したいページは 、別ページにあります。そのページのURLへ、直接アクセスできません。

    トップページで 3回 Tab で ちょうど ボタンにフォーカスがあたります。

     

    2007年7月14日 4:55
  • webBrowser 以外 TabStop を false で webBrowser に Index 0 を 振ってやると

     

    動くように なってきました。

    2007年7月14日 5:36
  • そのボタンの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();


     

    といった具合にすればボタンを押すことが可能ですよ

     

    コレならブラウザコントロールをクリックしなくてもいいはずでけど ・・・

    2007年7月14日 5:37
  • 今回クリックしようとしているボタンは

    <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属性 が わかりません。

     

    2007年7月14日 7:15
  • この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();


     

     

    といった具合で上手くいくようです

    参考になれば幸いです

    2007年7月14日 13:20