ホームページの入力フィールドに自動で移動するには?

解決


atc  2003-11-19 14:13:35  No: 80475  IP: [192.*.*.*]

VB6でプログラムを組んでいます。
IEを起動してホームページを見るところまではいけます。
そこで、ページを表示したと同時に個々のページの<FORM>(input type=text)などの入力フィールド(複数あれば最初のタグ)に移動したいのです。
情報持っている方お願いします。

編集 削除
魔界の仮面弁士  2003-11-19 15:50:02  No: 80476  IP: [192.*.*.*]

DocumentCompleteイベントの発生後に、Documentプロパティ経由で、
入力フィールドのHTML要素に対してfocusメソッドを実行すればOKかと。

編集 削除
atc  2003-11-19 17:15:05  No: 80477  IP: [192.*.*.*]

DocumentCompleteイベント発生後というのは、具体的にどの処理
にあたるのでしょうか?  
この掲示板を検索したのですがわかりませんでした。知識不足ですみません。

編集 削除
atc  2003-11-20 14:18:04  No: 80478  IP: [192.*.*.*]

'InetExp Object の作成!
Set IE = CreateObject("InternetExplorer.application")

Do While IE.Busy
Loop

過去ログを調べましたがこのIE起動の仕方事態がまずいのでしょうか・・・

編集 削除
atc  2003-11-26 14:43:49  No: 80479  IP: [192.*.*.*]

なんとかfocusすることができました。
魔界の仮面弁士さんありがとうございました。
しかし自動で入力するために変数xに
<INPUT type = "text" name = "id">
のidをいれて
objForm.x.focus(objForm.id.focus)
では命令が実行できません。変数を使うには
どうしたら良いのでしょうか?

編集 削除
魔界の仮面弁士  2003-11-26 17:24:44  No: 80480  IP: [192.*.*.*]

http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200302/03020045.txt
http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200309/03090009.txt
http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200309/03090093.txt

編集 削除
atc  2003-11-27 14:58:58  No: 80481  IP: [192.*.*.*]

魔界の仮面弁士様レスありがとうございます。過去ログを参照して
submitメソッドをやめてclickメソッドで作ってみたのですがうまくいきません。
 Dim objDocument    As Object    'As MSHTML.HTMLDocument
 Dim objForm        As Object    'As MSHTML.HTMLFormElement
 
  Set objDocument = IE.Document
  Set objForm = objDocument.Forms(0)
  
Dim objElement  As Object    'As MSHTML.IHTMLElement
Dim objElements As Object
      
  Set objElements = objForm.elements
  For Each objElement In objElements
     If objElement.Name = fname Then
       objElement.Click
     End If
  Next
#fnameというのは<input type = "text" name = "id">
#fname = "id"  となっています。
#エラーは出ないのですがクリックされていません
#どこかわるい点はありますか?

編集 削除
魔界の仮面弁士  2003-11-27 15:16:57  No: 80482  IP: [192.*.*.*]

> submitメソッドをやめてclickメソッドで作ってみたのですがうまくいきません。
やりたい事は、『入力フィールドに自動で移動する』ことですよね?
であれば、submitやclickは、この場合関係ないかと。focusメソッドでどうぞ。

> #fnameというのは<input type = "text" name = "id">
> #fname = "id"  となっています。
name属性を持つエレメントを探したいのであれば、
documentオブジェクトの、getElementsByNameメソッドも使えます。

> #エラーは出ないのですがクリックされていません
そもそも殆どのWebページでは、input type="text" エレメントを
クリックしても、何も起きないと思いますけれども。。。(^^;)

VB6でWindowsアプリを作る時だって、Command1_Click に処理を書く事はあっても、
Text1_Clickに処理を書く事は、殆どありませんよね。

編集 削除
atc  2003-11-27 16:03:48  No: 80483  IP: [192.*.*.*]

レスありがとうございます。
とんちんかんなことをいってましたが(私が)、なんとか解決できました。
上のソースのclickとfocusを入れ替えたらできました(^^;)
魔界の仮面弁士様ありがとうございました。

マウスで入力フィールドをクリックするとそこに移動しますよね?
それでclickメソッドでも移動するのだと思い、上のようなソースを
組んでしまいました。;;

最後にお聞きしたいのですが、前のソース(objForm.id.focus)の
”objForm.id”と”objElement”  
は同じものになったと考えてよろしいのでしょうか?

編集 削除
魔界の仮面弁士  2003-11-27 17:01:33  No: 80484  IP: [192.*.*.*]

> は同じものになったと考えてよろしいのでしょうか?

Is演算子を使えば、同一のオブジェクトであるかどうかを確認できます。

If objElement Is objForm.id Then
    MsgBox "同じ物です。"
Else
    MsgBox "違うものです。"
End If

編集 削除
atc  2003-11-27 20:39:43  No: 80485  IP: [192.*.*.*]

レスありがとうございます。
実行してみたところ”違うものです”でした。
いろいろオブジェクトについて調べてみます。
魔界の仮面弁士様様ありがとうございました。

編集 削除