Foxtable(狐表)用户栏目专家坐堂 → [求助]关闭指定标签页


  共有4275人关注过本帖树形打印复制链接

主题:[求助]关闭指定标签页

帅哥哟,离线,有人找我吗?
chnfo
  31楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2199 积分:18081 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2016/4/11 23:49:00 [只看该作者]

用了你前面介绍的这种方法:

Dim frm As New Windows.Forms.Form
frm.Text = "test"
frm.Topmost = True
frm.width = 500
frm.height = 500

Dim web As new Windows.Forms.Webbrowser
web.Navigate("www.baidu.com")
web.Dock = 5
frm.controls.add(web)
frm.Show

frm.Top = (SysInfo.ScreenHeight - frm.height) / 2
frm.left = (SysInfo.ScreenWidth - frm.width) / 2


问题是:总是会弹出script error,我在把IE的设置做了重置,安全级别调为中了,禁用了脚本调试等,依然没办法,所以才又换回到用IE浏览器。

[此贴子已经被作者于2016/4/11 23:49:53编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
Hyphen
  32楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2016/4/12 8:31:00 [只看该作者]

加上一句
web.ScriptErrorsSuppressed = True



 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  33楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2199 积分:18081 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2016/4/12 13:56:00 [只看该作者]

小结:在Win10+ie11环境下
1、如果使用IE浏览器,在打开最初几个窗口后,在自动关闭窗口时,先会报出“异常来自Hresult:0x800706B5”,然后报出“RPC服务器不可用。(异常来自HRESULT:0x800706BA)”的错误。
如果注释掉自动关闭窗口的代码,可以正常执行。但如果打开的网页多,会导致CPU和内存耗尽。
2、如果自建窗口,使用Web,会报出script error的错误,加入了Hyphen的代码“web.ScriptErrorsSuppressed = True”之后,网页打开时,例如图片、信息等加载不完全,页面不刷新,好象假死一样,直到关闭代码执行将其关闭,也就是说网页实际上并未打开。

各位有什么好办法吗?

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  34楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/4/12 14:24:00 [只看该作者]

 关闭用这种方法是否可以?

 

http://www.foxtable.com/help/topics/2713.htm

 


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  35楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/4/12 14:30:00 [只看该作者]

或者,试试这种方法。

 

Dim ps As  System.Diagnostics.Process() = System.Diagnostics.Process.GetProcessesByName("iexplore")
For Each p As System.Diagnostics.Process In ps
    msgbox(p.MainWindowTitle)
    if p.MainWindowTitle > "" then p.kill
Next


 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  36楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2199 积分:18081 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2016/4/12 15:03:00 [只看该作者]

ShowAppWindow(Caption, State)
这个方法我以前试验过,比如说我打开了淘宝的10个网页,如果caption是淘宝,好象会直接干掉这10个窗口。

下面这个属于专业级别的应用,我找个时间来试验一下。




 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  37楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/4/12 15:18:00 [只看该作者]

以下是引用chnfo在2016/4/12 15:03:00的发言:
ShowAppWindow(Caption, State)
这个方法我以前试验过,比如说我打开了淘宝的10个网页,如果caption是淘宝,好象会直接干掉这10个窗口。

 

不是根据标题关闭的吗?你可以去获取对象的标题啊,如

 

msgbox(对象.Document.Title)


 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  38楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2199 积分:18081 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2016/4/12 20:07:00 [只看该作者]

要是根据标题关闭,就没这么麻烦了。
比如百度百科的网页打开了多个,现在要是用showAppWindow(caption,state)肯定就是把所有的百度的网页全关了。

我只想关闭指定的。比如有10个百度百科的网页。
我想在打开至第5个之后,关闭第一个
打开至第6个之后,关闭第二个
依此类推

网上找了一些说明,大意是说:看起来被调用的目标对象已经挂了,要查找下是什么原因,是否调用了quit一类的语句。
这说明,调用quit或者调用frm.close(),都可能导致被调用的目标对象挂掉
[此贴子已经被作者于2016/4/12 20:28:41编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  39楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/4/12 20:36:00 [只看该作者]

 不同的网页,标题都是不一样的啊,不是可以获取吗?

 

 同时,还可以用 35楼的方法


 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  40楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2199 积分:18081 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2016/4/12 21:23:00 [只看该作者]

35楼试验了一下。

打开淘宝网,然后进去聚划算,随便点开5个网页。


Dim ps As  System.Diagnostics.Process() = System.Diagnostics.Process.GetProcessesByName("iexplore")

Output.Show(ps.length)

For Each p As System.Diagnostics.Process In ps

    Output.Show(p.MainWindowTitle)

Next


结果是:

4     ‘检查了进程,显示有6个IE进程


【聚划算】品牌团_聚品牌更具品质 - Internet Explorer


其实,这个真正的标题应当是还有链接地址在后面的,如果使用

ShowAppWindow(Caption, State)

这个方法,根本无法去识别要关掉的是哪一个,可以肯定的是:最后一个打开的将会最先关闭,我所希望的是最先打开的最先关闭,最后打开的最后才关闭。



[此贴子已经被作者于2016/4/12 23:35:29编辑过]

 回到顶部
总数 43 上一页 1 2 3 4 5 下一页