前提・実現したいこと
Microsoft Visual Studio Community 2017
社内で運用しているIEベースのシステムを自動操作するC#フォームアプリを作成しています。
先にそのシステムを起動しておき、C#アプリを実行すると該当のウィンドウをアクティブにして
SendKeysにて文字情報とTAB移動をしていました。
TAB移動では操作できないボタンを実行したいのですが、
調べた方法では、最初にIEをアプリから起動する方法として紹介してあり、
起動済みのIEのボタン操作方法がわかりませんでした。
ご存知の方いましたら教えていただきたいです。
発生している問題・エラーメッセージ
ボタン操作の方法は、
http://blog.clockahead.com/2015/06/cie-8.html
この方法でならテストで動作するのですが、
IEを新規で起動する前提のため
起動済みの場合は、どのように指定すればいいのでしょうか?
操作したいボタンは、
<input name="ctl03" type="button" value="最新" class="CMDBTN" onclick="ExecSetTNK(1);" />
となっています。
該当のソースコード
開発言語 C#
public static class SHDovVwEx { public static void Wait(this SHDocVw.InternetExplorer ie, int millisecond = 0) { while (ie.Busy == true || ie.ReadyState != SHDocVw.tagREADYSTATE.READYSTATE_COMPLETE) { Thread.Sleep(100); } Thread.Sleep(millisecond); } } private void button1_Click(object sender, EventArgs e) { //起動済みのIEをアクティブウィンドウに foreach (System.Diagnostics.Process p in System.Diagnostics.Process.GetProcesses()) { if (0 <= p.MainWindowTitle.IndexOf("注文書入力")) { SetForegroundWindow(p.MainWindowHandle); System.Threading.Thread.Sleep(500); break; } } //SendKeysの中身は適当です System.Windows.Forms.SendKeys.Send("あいうえお" + "\t"); System.Threading.Thread.Sleep(100); System.Windows.Forms.SendKeys.Send("かきくけこ" + "\t"); System.Threading.Thread.Sleep(100); //ここでボタンクリックを指示したい。 }
試したこと
var IE = new SHDocVw.InternetExplorer(); IE.Visible = true; object URL = "https://www.yahoo.co.jp/"; IE.Navigate2(ref URL); IE.Wait(); var doc = IE.Document as mshtml.IHTMLDocument3; doc.getElementById("srchtxt").innerText = "ぐるぐる"; IE.Wait(); //検索ボタンをクリック doc.getElementById("srchbtn").click();
アプリでIEを起動するならばYahooで「ぐるぐる」にて検索ボタン実行は可能でした。
回答1件
あなたの回答
tips
プレビュー