- - PR -
Windowsアプリからブラウザ上のコントロールに値を入れる
1
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 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") のようにコレクションを取り出して、
のような感じでよろしいのでしょうか? また、流れの最後のSUBMITを押す所が…さっぱりわかりません。 どうかご助力ください。 | ||||||||||||||||
|
投稿日時: 2006-06-08 14:38
アプリっていうかスクリプトでやった方がよくね?
| ||||||||||||||||
|
投稿日時: 2006-06-08 14:44
すみません。 当方スクリプトはさっぱりわからなくて… どこかスクリプトの参考になるページなどはありますか? | ||||||||||||||||
|
投稿日時: 2006-06-08 15:06
ソースコードの細かいことはあまり見ていませんが、基本的には書かれたような感じでいいと思います。ただ、仕様が明確でない Web サイトの HTML のオブジェクト構造を調べるので、えいっと直接コーディングするのは難しいと思います。 たとえば VB だったらですが、VB のウォッチウィンドウで変数の中身を見たり、イミディエイトウィンドウで、
として型を見たり、
としてインテリセンスで使えるメソッドやプロパティーを調べたりして、実行時に地道にオブジェクト構造を辿るのが良いかもしれません。VB 以外でもツールはいろいろあるかもしれませんが。 見つけたクラス名やメソッド名でネットを検索するのも良い手です。
なお、submit ボタンは、MSHTML ライブラリーの HTMLFormElement クラスの submit メソッドを呼ぶだけで押せたと思います。 -- unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86} | ||||||||||||||||
|
投稿日時: 2006-06-09 00:21
おぉ!ありがとうございます! とりあえず、テキストボックスは
のようなコードで実現できました! 今コンボボックスとチェックボックスに挑戦しています。 コンボボックスは
のような形でいいのかな… htElemをHTMLelementにしてしまうと、 aaa.SelectedIndex でエラーになってしまうので。 どうなんでしょうか? 追記: やっぱりobject型に入れてもHTMLElementクラスにはSelectedIndexがないので コンパイルは通ってもエラーになってしまう…うぅ 誰か助けて下さい! [ メッセージ編集済み 編集者: JAKEWISE 編集日時 2006-06-09 00:29 ] | ||||||||||||||||
|
投稿日時: 2006-06-09 11:13
既にうっすらとは指摘されていることですが、「HtmlElement クラスは、MSHTML が公開する COM オブジェクトのラッパクラスだ」ということを肝に銘じれば道は開けます。 HtmlElement がラップする COM オブジェクトは HtmlElement.DomElement プロパティとしてエクスポートされているので、こいつを IHTEMLSelect インターフェースにキャストしてやれば、selectedIndex にアクセスできるはずです。 | ||||||||||||||||
|
投稿日時: 2006-06-09 11:27
// 大文字小文字が入り交じって、mshtml なのか .NET 2.0 のクラスなのか分かりづらいです……。
.NET 2.0 のクラスである HtmlElement では、要素固有のメソッド実行や属性取得・設定を行うのに InvokeMethod / GetAttribute / SetAttribute を通して実行する形になります。 |
1