WebBrowserコントロールで、HTML内のFORMのボタンを制御するには?


ゆっきぃ  2003-06-25 19:30:04  No: 107627

はじめまして、ゆっきぃと申します。
WebBrowserコントロールで、Htmlソースをゲットしていろいろなことができることがわかり、昨日から色々試していました。
Yahooメールのログインを自動的に行わせて、メールをチェックするようなEXEを作成してみようと思い、作成していたところ
UserID、パスワードのINPUTに値を入れることはできたのですが
ログインのボタンを自動的に押させることができませんでした。
どのように制御したら、自動的に処理させることができるのでしょうか?
どなたかご教授ください。お願いいたします。


あお2  2003-06-27 07:12:06  No: 107628

NavigateでログインするcigにUserID、パスワードを渡せば入れるはず
私も関連するような質問入れちゃったのですが
参考になるようなサイトとかありますかね


ゆっきぃ  2003-06-27 22:34:08  No: 107629

レスありがとうございます。
関連サイトは探してもなかなか見つからないのですが…。
たとえばYahooなんかの場合ですと、Formタグの中のInputタグのNameを調べて
http://〜login?login=*****&passwd=****
と、Navigateで行けばできるようです。

でも、これだとFormのボタンを押したことにはならずにあまりよろしくないような気がします。
何かうまい方法は無いものですかねぇ…。


VBレスキュー(花ちゃん)  URL  2003-06-27 23:05:44  No: 107630

これではどうでしょうか?

Private Sub Command1_Click()
    Dim IE As Object
    Set IE = CreateObject("InternetExplorer.Application")
    With IE
        .Navigate ("http://mail.yahoo.co.jp/")
        DoEvents
        Do While .Busy = True
            DoEvents
        Loop
        .Visible = True
        Do While .Document.ReadyState <> "complete"
            DoEvents
        Loop
        .Document.Forms(0).Elements("login").Value = CVar("ユーザID")
        .Document.Forms(0).Elements("passwd").Value = CVar("パスワード")
        .Document.Forms(0).Elements(".persistent").Click
        .Document.Forms(0).Elements(16).Click
    End With
    Set IE = Nothing
End Sub


ゆっきぃ  2003-06-30 20:31:28  No: 107631

>VBレスキュー(花ちゃん)さん
レスありがとうございます。
CreateObjectで、IEのオブジェクトを作成した場合
IEが起動してしまいました。
Form内に、WebBrowserコントロールを埋め込んでFormをLoadするだけで
VisibleをFalseにしておくと、フォームも起動せず、メモリ上(?)で
処理を実施することができるようです。

ちなみに私は、こんな感じで書いてみました。

'ログイン
Private Sub Command1_Click()
   Dim strName As String
   Dim strPass As String
   Dim strJmpUrl As String

   strJmpUrl = "http://www.yahoo.co.jp/login?" 
   strName = txtUserName  'フォーム内に作ったTextBox
   strPass = txtPassWord  'フォーム内に作ったTextBox
   
   strJmpUrl = strJmpUrl & "login=" & strName & _
                           "&passwd=" & strPass
   With WB1
        .Navigate2 strJmpUrl
        Do While .ReadyState <> READYSTATE_COMPLETE
            DoEvents
        Loop
        
    End With

End Sub

これだと、確かにログインはできるのですが
その後、メールチェックなどを同じEXE内で行おうとしても、ログインされて
いないとみなされてしまいます…。

この処理を実行してから、IEを開いてYahooを見ると
ログインしている状態になっているのに…。なんでなんですかねぇ…。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加