質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

945閲覧

C#で起動済みのIEにあるボタンを操作する方法

komore

総合スコア12

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

1クリップ

投稿2019/06/24 06:24

編集2019/06/24 06:56

前提・実現したいこと

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で「ぐるぐる」にて検索ボタン実行は可能でした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/06/24 06:47

コードは ``` と ``` で囲ってください。インデントされて見やすくなりますので。ほとんどの人はインデントされてないコードは読む気が起きないと思います。ご自分でもそうでは? 読んでもらえないと話が始まらないのですから、より多くの人に読んでもらえる努力得推しましょう。
komore

2019/06/24 06:57

SurferOnWww様、指摘していただきありがとうございます。 コード部を```で囲み修正させていただきました。
Zuishin

2019/06/26 08:12

なんでそんな迂遠な方法をとるのか理解できません。 社内なら API を用意すればいいじゃないですか。
guest

回答1

0

自己解決

ボタンを画像で認識して、その座標に対してマウスクリックするコードで代用しました。
Zuishin様のAPIを利用する方法に関しては、知識が足りていないため後日勉強します。

投稿2019/06/27 05:12

komore

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問