- PR -

Windowsアプリからブラウザ上のコントロールに値を入れる

1
投稿者投稿内容
JAKEWISE
会議室デビュー日: 2006/05/17
投稿数: 12
投稿日時: 2006-06-08 14:18
いつもお世話になっております。

現在開発中のシステムでWEBポータルを利用しているのですが、
複数のファイルのアップロードなどを効率よく行うため、
WEBブラウザ上のテキストボックスやコンボボックスなどの内容を
自動的に入力できるWindowsアプリを作成したいのです。
(ポータルを改造できればそれに越した事はないのですが…w)

流れ:
ブラウザ上の
 - 数個のテキストボックス(INPUT type="TEXT" タグ)
 - 数個のコンボボックス(SELECT タグ)
 - オプションボタン (INPUT type="RADIO")
 - チェックボックス1つ(INPUT type="CHECKBOX" タグ)
にあらかじめWINDOWSアプリ上にあるテキストボックス等の値を入れる
ブラウザのSUBMITボタンをアプリに押させる

WebBrowserコントロールのドキュメントから、
dim eleColHTML as HTMLelementCollection = wb.document.getElementsByTagName("INPUT")
のようにコレクションを取り出して、
コード:
Dim eleHTML1 as HTMLelement = eleColHTML.item(0)
eleHTML1.Value= textBox1.text


のような感じでよろしいのでしょうか?

また、流れの最後のSUBMITを押す所が…さっぱりわかりません。

どうかご助力ください。
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2006-06-08 14:38
アプリっていうかスクリプトでやった方がよくね?
JAKEWISE
会議室デビュー日: 2006/05/17
投稿数: 12
投稿日時: 2006-06-08 14:44
引用:

ぶさいくろうさんの書き込み (2006-06-08 14:38) より:
アプリっていうかスクリプトでやった方がよくね?



すみません。
当方スクリプトはさっぱりわからなくて…
どこかスクリプトの参考になるページなどはありますか?
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2006-06-08 15:06
引用:

JAKEWISEさんの書き込み (2006-06-08 14:18) より:
のような感じでよろしいのでしょうか?


ソースコードの細かいことはあまり見ていませんが、基本的には書かれたような感じでいいと思います。ただ、仕様が明確でない Web サイトの HTML のオブジェクト構造を調べるので、えいっと直接コーディングするのは難しいと思います。
たとえば VB だったらですが、VB のウォッチウィンドウで変数の中身を見たり、イミディエイトウィンドウで、
コード:
? TypeName(eleHTML1)


として型を見たり、
コード:
eleHTML1.


としてインテリセンスで使えるメソッドやプロパティーを調べたりして、実行時に地道にオブジェクト構造を辿るのが良いかもしれません。VB 以外でもツールはいろいろあるかもしれませんが。
見つけたクラス名やメソッド名でネットを検索するのも良い手です。

引用:

JAKEWISEさんの書き込み (2006-06-08 14:18) より:
また、流れの最後のSUBMITを押す所が…さっぱりわかりません。


なお、submit ボタンは、MSHTML ライブラリーの HTMLFormElement クラスの submit メソッドを呼ぶだけで押せたと思います。

--
unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86}
JAKEWISE
会議室デビュー日: 2006/05/17
投稿数: 12
投稿日時: 2006-06-09 00:21
引用:

unibonさんの書き込み (2006-06-08 15:06) より:

なお、submit ボタンは、MSHTML ライブラリーの HTMLFormElement クラスの submit メソッドを呼ぶだけで押せたと思います。

--
unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86}



おぉ!ありがとうございます!

とりあえず、テキストボックスは
コード:

Dim ecHtml as HTMLelementCollection = wb.Document.All.GetElementsByName("aaa")
ecHtml(0).SetAttribute("VALUE", textBox.Text)


のようなコードで実現できました!
今コンボボックスとチェックボックスに挑戦しています。
コンボボックスは
コード:

Dim htElem As New Object
htElem = wb.Document.All.GetElementsByName("comboBox")
htElem(0).SelectedIndex = comboOnVBform.SelectedIndex


のような形でいいのかな…
htElemをHTMLelementにしてしまうと、 aaa.SelectedIndex
でエラーになってしまうので。
どうなんでしょうか?

追記:
やっぱりobject型に入れてもHTMLElementクラスにはSelectedIndexがないので
コンパイルは通ってもエラーになってしまう…うぅ
誰か助けて下さい!

[ メッセージ編集済み 編集者: JAKEWISE 編集日時 2006-06-09 00:29 ]
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2006-06-09 11:13
引用:

やっぱりobject型に入れてもHTMLElementクラスにはSelectedIndexがないので
コンパイルは通ってもエラーになってしまう…うぅ



既にうっすらとは指摘されていることですが、「HtmlElement クラスは、MSHTML が公開する COM オブジェクトのラッパクラスだ」ということを肝に銘じれば道は開けます。

HtmlElement がラップする COM オブジェクトは HtmlElement.DomElement プロパティとしてエクスポートされているので、こいつを IHTEMLSelect インターフェースにキャストしてやれば、selectedIndex にアクセスできるはずです。
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2006-06-09 11:27
// 大文字小文字が入り交じって、mshtml なのか .NET 2.0 のクラスなのか分かりづらいです……。

.NET 2.0 のクラスである HtmlElement では、要素固有のメソッド実行や属性取得・設定を行うのに InvokeMethod / GetAttribute / SetAttribute を通して実行する形になります。
1

スキルアップ/キャリアアップ(JOB@IT)