- 締切済み
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) ログイン処理・・・ 同じ事を繰り返す・・・
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- salf
- ベストアンサー率42% (27/64)
>自動のみ引っかかると言う事は、ログインページ側で何らかの不正検知を行っているということでしょうか? そんなことはないと思います。 SendKey を使ってキーボード操作を送っているのであれば基本的に人間が操作しているのと同じのはずです。 なので、プログラムと同じ作業を手で行なうと同じことになると思ったのですが・・・。 それでは、複数ログインするのではなく、一回ログインするプログラムを複数作成して、 それを連続して起動させるとどのような動きになりますか?
- salf
- ベストアンサー率42% (27/64)
>SendKeyを使ってログインしています。 ということは、「IE を開いてどこかのページを表示して、そのページに ID と PassWord を入力してログインする。」 ということを複数回行うプログラムを作成されており、ログイン処理部は hibachi 様は作成されてないのですか? 私が思ったのは、そのログインの処理時にログインIDとパスワードを クッキー等で保存してるのではないかということです。 そのログインページがどのようなものかわからないのでなんともいえませんが、 一般的なログイン処理はなにかでIDとパスワードを保存し、それを不正アクセス検出に利用しています。 (例えばログイン後のページのURLを直接打たれた場合の対処等) なので、初回ログインのIDが残ったままになっている可能性があります。 プログラムではなく手動でプログラムと同じ作業を行うとうまくログイン前の画面が表示されますか?
補足
>「IE を開いてどこかのページを表示して、そのページに ID と PassWord を入力してログインする。」 この部分は私が作っていて、それがログイン処理部となっています。 > プログラムではなく手動でプログラムと同じ作業を行うとうまくログイン前の画面が表示されますか? 手動で同じ作業をすると前のIDは残りません。 自動のみ引っかかると言う事は、ログインページ側で何らかの不正検知を行っているということでしょうか?
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
繰り返しの時に 前のは、Quit したり、オブジェクトの接続を切り 新しく Set objIe = CreateObject ("InternetExplorer.Application") をする
お礼
つまり、 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が残りました。
補足
オブジェクトの接続を切るのは Set objIe = Nothing Set WshShell = Nothing でもいいですか?ならば、一応毎回やっているのですが。 Quitは前のID画面が消えてしまいます。違うIDで複数同時にログインしたいんです。
- salf
- ベストアンサー率42% (27/64)
ログイン処理部が重要です。 どのようにログイン処理を行っているのでしょうか?
補足
SendKeyを使ってログインしています。 Sleep (250) WshShell.SendKeys (id) Sleep (800) WshShell.SendKeys ("{TAB}") WshShell.SendKeys (pass) WshShell.SendKeys ("{ENTER}")
補足
おっしゃった事を参考に、ログインページを最初に複数出してからログインする事で解決しました。 ありがとうございました。