こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

C#でHTAを操作

「HTAを起動し、そのHTA上のアンカーリンクをクリックする。」という一連の操作を、プログラムで自動化したいと考えております。
現在、C#での実装を試みておりますが、HTAを起動することまではできるのですが、アンカーリンクをクリックすることが実現できておりません。
良い方法をご存じの方がいらっしゃいましたら、ご教示ほどよろしくお願いいたします。
※既存のHTAを操作するので、HTAに手を加えることはできません。
※C#ではなく、VBSなどでの実装方法でも構いません。

投稿日時 - 2020-10-23 23:47:52

QNo.9814922

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

HTAという、いわば外部のアプリに対して、クリックなどを送ることそのものが、あまりおすすめできない方向です。ブラウザで表示された画面の情報を取得し、メッセージを送信、これらを必要に応じて繰り返す泥臭い手続きになるからです。

具体的には、外部アプリを今回のようなやり方で操作するとしたら、ロードされたアプリの位置を取得し、想定されたアンカーリンクの位置に対してクリック送る方法や、TABキーでフォーカス移動して、Enterキーを送るなどの方法が考えられます。

アプリのロードが終了したかなどを、その都度解析するよう組むことが比較的良い方法ですが、よくあるのは単に待機時間を設定することです。しかし、マシンスペックや通信環境などで違いが出てもおかしくありませんから、待機時間だけでは、うまく動作しないことがあると思います。


ターゲット(実行を想定した環境)によって、処理を切り替える必要があるかもしれないです。例えば、Windowsの8.1と10での違いなどです。


メッセージを送るところについては、Googleなどで以下のキーワード検索が考えられます。
ブラウザ sendkeys
ブラウザ sendmessage


Visual Basic6で、自身にロードしたページのリンクをクリックしたり、テキストボックス入力する、そんなsendするサンプルを見た記憶はありますが見つかりません。すみません。C#でもあるとは思いますが、それも見つかりません。すみません。

直接のご要望を満たすものではないですが、糸口にはなると思い、ご案内してみました。参考にならなかったらごめんなさい。

投稿日時 - 2020-10-24 06:23:12

お礼

ご回答ありがとうございます。

キーイベントを送る方法だと、仰る通り待機時間での調整となってしまいますので、タイミングによっては正常に動作しないことがありました。このため、C#でIEを操作する方法と同じような方法で、HTAも操作できないかと思った次第でした。
VB6でのサンプルの件、私も探してみたいと思います。

投稿日時 - 2020-10-24 18:53:48

あなたにオススメの質問