• 締切済み

VBScriptでオートパイロットプログラムを作ったのですが

環境は、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)   ログイン処理・・・   同じ事を繰り返す・・・

みんなの回答

  • salf
  • ベストアンサー率42% (27/64)
回答No.4

>自動のみ引っかかると言う事は、ログインページ側で何らかの不正検知を行っているということでしょうか? そんなことはないと思います。 SendKey を使ってキーボード操作を送っているのであれば基本的に人間が操作しているのと同じのはずです。 なので、プログラムと同じ作業を手で行なうと同じことになると思ったのですが・・・。 それでは、複数ログインするのではなく、一回ログインするプログラムを複数作成して、 それを連続して起動させるとどのような動きになりますか?

hibachi
質問者

補足

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

  • salf
  • ベストアンサー率42% (27/64)
回答No.3

>SendKeyを使ってログインしています。 ということは、「IE を開いてどこかのページを表示して、そのページに ID と PassWord を入力してログインする。」 ということを複数回行うプログラムを作成されており、ログイン処理部は hibachi 様は作成されてないのですか? 私が思ったのは、そのログインの処理時にログインIDとパスワードを クッキー等で保存してるのではないかということです。 そのログインページがどのようなものかわからないのでなんともいえませんが、 一般的なログイン処理はなにかでIDとパスワードを保存し、それを不正アクセス検出に利用しています。 (例えばログイン後のページのURLを直接打たれた場合の対処等) なので、初回ログインのIDが残ったままになっている可能性があります。 プログラムではなく手動でプログラムと同じ作業を行うとうまくログイン前の画面が表示されますか?

hibachi
質問者

補足

>「IE を開いてどこかのページを表示して、そのページに ID と PassWord を入力してログインする。」 この部分は私が作っていて、それがログイン処理部となっています。 > プログラムではなく手動でプログラムと同じ作業を行うとうまくログイン前の画面が表示されますか? 手動で同じ作業をすると前のIDは残りません。 自動のみ引っかかると言う事は、ログインページ側で何らかの不正検知を行っているということでしょうか?

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

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

hibachi
質問者

お礼

つまり、   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が残りました。

hibachi
質問者

補足

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

  • salf
  • ベストアンサー率42% (27/64)
回答No.1

ログイン処理部が重要です。 どのようにログイン処理を行っているのでしょうか?

hibachi
質問者

補足

SendKeyを使ってログインしています。   Sleep (250)   WshShell.SendKeys (id)   Sleep (800)   WshShell.SendKeys ("{TAB}")   WshShell.SendKeys (pass)   WshShell.SendKeys ("{ENTER}")

関連するQ&A

専門家に質問してみよう