【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?

環境は、VB 6.0 SP5 です。

以下のようにVBでプログラミングしたんですが(VBScript含む)、続けて違うIDでログインしようとすると、該当ページが前のIDでログインしたままになっていて、動作が不安定です。普通にIEを立ち上げるてログインした場合、2回目に立ち上げた状態は、ログイン前のまっさらなページが表示されますよね。
何が問題なのでしょう?
ご教授願えないでしょうか。

  Dim WshShell As Object
  Dim objIe As Object

  Set WshShell = CreateObject("WScript.Shell")
  Set objIe = CreateObject ("InternetExplorer.Application")

  objIe.Navigate("該当ページのURL")
  objIe.Visible = True
  WshShell.AppActivate (objIe)

  ログイン処理・・・

  同じ事を繰り返す・・・

A 回答 (4件)

>自動のみ引っかかると言う事は、ログインページ側で何らかの不正検知を行っているということでしょうか?


そんなことはないと思います。
SendKey を使ってキーボード操作を送っているのであれば基本的に人間が操作しているのと同じのはずです。

なので、プログラムと同じ作業を手で行なうと同じことになると思ったのですが・・・。

それでは、複数ログインするのではなく、一回ログインするプログラムを複数作成して、
それを連続して起動させるとどのような動きになりますか?

この回答への補足

おっしゃった事を参考に、ログインページを最初に複数出してからログインする事で解決しました。
ありがとうございました。

補足日時:2006/07/13 12:01
    • good
    • 0

>SendKeyを使ってログインしています。


ということは、「IE を開いてどこかのページを表示して、そのページに ID と PassWord を入力してログインする。」
ということを複数回行うプログラムを作成されており、ログイン処理部は hibachi 様は作成されてないのですか?

私が思ったのは、そのログインの処理時にログインIDとパスワードを
クッキー等で保存してるのではないかということです。

そのログインページがどのようなものかわからないのでなんともいえませんが、
一般的なログイン処理はなにかでIDとパスワードを保存し、それを不正アクセス検出に利用しています。
(例えばログイン後のページのURLを直接打たれた場合の対処等)
なので、初回ログインのIDが残ったままになっている可能性があります。

プログラムではなく手動でプログラムと同じ作業を行うとうまくログイン前の画面が表示されますか?

この回答への補足

>「IE を開いてどこかのページを表示して、そのページに ID と PassWord を入力してログインする。」

この部分は私が作っていて、それがログイン処理部となっています。

> プログラムではなく手動でプログラムと同じ作業を行うとうまくログイン前の画面が表示されますか?

手動で同じ作業をすると前のIDは残りません。
自動のみ引っかかると言う事は、ログインページ側で何らかの不正検知を行っているということでしょうか?

補足日時:2006/07/13 09:53
    • good
    • 0

繰り返しの時に


前のは、Quit したり、オブジェクトの接続を切り
新しく
Set objIe = CreateObject ("InternetExplorer.Application")
をする

この回答への補足

オブジェクトの接続を切るのは
  Set objIe = Nothing
  Set WshShell = Nothing
でもいいですか?ならば、一応毎回やっているのですが。
Quitは前のID画面が消えてしまいます。違うIDで複数同時にログインしたいんです。

補足日時:2006/07/13 08:48
    • good
    • 0
この回答へのお礼

つまり、

  Dim WshShell As Object
  Dim objIe As Object

  Set WshShell = CreateObject("WScript.Shell")
  Set objIe = CreateObject ("InternetExplorer.Application")

  ログイン処理・・・

  Set objIe = Nothing
  Set WshShell = Nothing

  Dim WshShell2 As Object
  Dim objIe2 As Object

  Set WshShell2 = CreateObject("WScript.Shell")
  Set objIe2 = CreateObject ("InternetExplorer.Application")

  ・・・以下同じ

としても2回目の画面に前のIDが残りました。

お礼日時:2006/07/13 09:21

ログイン処理部が重要です。


どのようにログイン処理を行っているのでしょうか?

この回答への補足

SendKeyを使ってログインしています。

  Sleep (250)
  WshShell.SendKeys (id)
  Sleep (800)
  WshShell.SendKeys ("{TAB}")
  WshShell.SendKeys (pass)
  WshShell.SendKeys ("{ENTER}")

補足日時:2006/07/13 08:56
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報