ひしだまの変更履歴

ひしだまHPの更新履歴。
主にTRPGリプレイの元ネタ集、プログラミング技術メモと自作ソフト、好きなゲームや音楽です。

DocumentComplete捕捉成功!アパートのせいだった

2007-11-07 22:32:12 | PG(VC++)

IWebBrowser2のDocumentCompleteイベントが捕捉できなかったのは、どうもアパートメントのせいだったらしい。
イベントが発生するのは別スレッドなのかなーと思っていたので、CoInitializeEx()でマルチスレッドを指定できるというから試しにMTAを指定してみたら、見事にビンゴ!

しかし他の関数を実行してみたら、STAで動いていたのにMTAでエラーになるものを発見。手放しでMTAにすればいいってもんでもないようだ…。

つーわけでJava版にもMTAを指定できるようなメソッドを加えてはみたものの、イベントの捕捉は実装していないし、使い道は無いかなー。


コメント (1)    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« ファイルダウンロード修正 | トップ | 一見無意味なオーバーライド »
最新の画像もっと見る

1 コメント

コメント日が  古い順  |   新しい順
Unknown (通りすがりの困っている人)
2008-02-24 21:09:38
全く無関係な事を書いていたらすみません。
検索でここがひっかかったので。

EXCELマクロを組んでいる時に、webbrowser1のDocumentCompleteイベントが幾度も発生してしまうページ(たとえばアマゾン)があります。
下記のように組んだのですが、アマゾンで商品ページを開くとDCCountが8とかになる場合があります。
大抵のページでは1になります。(というかそれを期待しているわけで。DCCount絡みのコードはデバグのために追加したものです。)
とても困ったんですが、結局APIを使う方が正解という事で無視する予定です。
単なる愚痴でした。すみません。

Dim flag As Integer
Dim DCCount As Integer

Private Sub wopen(WB As WebBrowser, url As String)

flag = True
DCCount = 0
WB.Navigate url
Do While flag
DoEvents
Loop

End Sub

Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, url As Variant)

flag = False
DCCount = DCCount + 1

End Sub
返信する

コメントを投稿

PG(VC++)」カテゴリの最新記事