1

长话短说:我正在尝试编写一个将 IE 的历史记录转储到文本文件的应用程序。因为我很懒,所以我去搜索一个预先存在的库,并找到了这个漂亮的项目来构建:http ://www.freevbcode.com/ShowCode.asp?ID=6702 。只是,我卡住了……

我终于得到了转储历史记录的程序,但它只有在我将Module1.vbMsgBox()的第 169 行放入时才有效。我试过放在那里,但这不起作用。那里必须有一个消息框,否则只会列出今天的历史记录。Thread.Sleep()

我的猜测,因为这是在与 交谈wininet.dll,所以这是一个并发的事情。 Thread.Sleep()(对于 For...Next 循环)停止程序监听;在分配值之前没有任何东西使它退出循环,但是 MsgBox() 是正确的。除了 MsgBox() 之外还有什么东西会产生同样的效果吗?我希望不必点击 OK 三十次即可使程序正常工作。

这是我的分支/版本/派生作品: http: //profnano.org/andy/misc/img/HistList.zip;这是一个 VS.NET2003 项目。

4

1 回答 1

5

MsgBox() 泵送一个消息循环。这可以让所有类型的代码解开。Windows 有机会自己绘制。解决了由于主线程陷入循环而导致的 COM 死锁,这在涉及 IE 时总是一个问题。调用 DoEvents() 是 MsgBox() 的非常不完美的替代方法。

于 2009-12-15T18:30:04.000 回答