我正在寻找以下问题的帮助(或建议/线索)。
此控制台应用:
现在,当您在浏览器(不是IE,但是一般的explorer.exe)处于活动状态并且导航到文件夹(这会触发TitleChange事件)时运行此应用程序阻止资源管理器线程。在关闭VB应用程序之前,无法在资源管理器中进一步导航。
此暂停发生在TitleChange子行的
行上Console.WriteLine("URL=" + objIE.LocationURL)
在事件之外获取LocationURL属性可以正常工作。在事件中,它阻止了资源管理器线程。 引起我注意的是,在Visual Studio的即时窗口中,在上面一行的断点上,我无法访问相同的属性:
?objIE.LocationURL
Evaluation requires a thread to run temporarily. Use the Watch window to perform the evaluation.
代码:
Dim objIE As SHDocVw.InternetExplorer
Sub Main()
Dim objShellWindows As SHDocVw.ShellWindows = CreateObject(“Shell.Application”).Windows
If (objShellWindows.Count > 0) Then
objIE = objShellWindows.Item(0)
AddHandler objIE.TitleChange, AddressOf TitleChange
'wait for events until a key is pressed by the user
Do
If Not (Console.ReadKey.KeyChar = "") Then Exit Do
Loop
End If
End Sub
Private Sub TitleChange(title As String)
Console.WriteLine("TitleChange: " + title) 'works fine
Console.WriteLine("URL=" + objIE.LocationURL) 'blocks the explorer thread!
End Sub
我用谷歌搜索了几天,但无法解决它...任何帮助都将不胜感激!感谢
答案 0 :(得分:0)
控制台应用程序需要一个消息循环。 通过在MS Visual Studio中创建Windows窗体应用程序项目而不是控制台应用程序项目来解决此问题。