アプリ版:「スタンプのみでお礼する」機能のリリースについて

いつもお世話になっております。
VB2005ユーザーです。

WebBrowser内の"submit"を押したあと、違うページに行きたいのですが、
"submit"を押す前に"Navigate"で指定しているページに行ってしまいます。

このようなコードを書いています。

With WebBrowser1
.Navigate("最初のURL")

Do While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete
System.Windows.Forms.Application.DoEvents()
Loop

.Document.Forms(0).InvokeMember("submit")

Do While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete
System.Windows.Forms.Application.DoEvents()
Loop

.Navigate("次の指定URL")

Do While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete
System.Windows.Forms.Application.DoEvents()
Loop


「指定URL」は"submit"により新しいHTMLが生まれるので、その後の作業のためにどうしても"submit"を押したいのですが、上のようなコードですと先に「指定URL」に行ってしまいます。

"submit"をクリックせず、無視してしまうのです。

Navigate("次の指定URL")を外せばクリックしてくれるのですが・・・。


WebBrowserを完全に待機させる方法などが必要なのでしょうか?

宜しくご教授のほどお願い致します。

A 回答 (2件)

InvokeMemberでSubmitしても RedayStateは変化しないようです


Submit直後にDoEventsを実行してもダメみたいですね

Submitが正常に行われたかどうかを知る術はあるのでしょうか?
たとえばSubmit後のページに特定の出来るメッセージ(文言)があるとか

仮に Spanタグなどが追加されるのであれば

dim bFlag as boolean, ss as string
while bFlag = false
  try
    ' 追加されるSpanタグのid属性が mySpanの場合
    ss = WebBrowser1.Document.getElementByID("mySpan")
    bflag = True
  catch ex as Exception
    Threading.Thread.Sleep(100)
    Application.DoEvents()
  End catch
end while
といった具合で待機してみてはいかがでしょう
    • good
    • 0
この回答へのお礼

ありがとうございます!!

ご提示いただいたコードを参考に、適所に待ち時間を入れることで解決できました!!

お礼日時:2007/10/07 08:12

submit後にDoEventsを入れてみてください。



.Document.Forms(0).InvokeMember("submit")

System.Windows.Forms.Application.DoEvents()

Do While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete
System.Windows.Forms.Application.DoEvents()
Loop
    • good
    • 0
この回答へのお礼

ありがとうございます!!

「System.Windows.Forms.Application.DoEvents()」も場所・コードによっては効果的であるということがわかりました。

お礼日時:2007/10/07 08:13

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