场景1:正常工作
在Windows桌面应用程序中,我打开一个浏览器窗口(在ShDocVw.InternetExplorer的帮助下),加载一个托管站点的页面并将属性设置为某个值(例如,lblName.Text =“Steve M.” )。现在,使用ShDocVw.InternetExplorer,我可以检查是否存在具有指定名称的浏览器对象。通过这样做,我将阻止打开重复的浏览器窗口。
场景2:问题
现在,我想做以下事情。 我将通过在Internet Explorer的地址栏中键入地址来打开上一页。因此它将加载相同的名称(例如,lblName.Text =“Steve M.”)。 如果我打开桌面应用程序并重复场景1 ,将打开一个重复的窗口。
如何防止此问题?
我尝试将桌面应用程序的引用添加到Web应用程序。但没有任何效果:(
答案 0 :(得分:1)
你控制那个asp.net网站(你能改变它的代码吗?)
我对桌面应用程序的了解不足以告诉您这是否可行;对我来说似乎不可能或非常困难;毕竟,它是浏览器的私有 - 开放 - 网页业务,它为它运行的JS对象[页面]。
但是,也许你可以这样做:当JS对象初始化时,使用JS代码将页面标题更改为固定的东西,这对你的桌面应用程序来说意味着你正在寻找的那个对象已经准备就绪。
通常,当该页面加载时,页面标题为“我的特殊页面”。也许在加载对象后,您可以将标题更改为“我的特殊页面就绪”(或者如果您愿意的话,不会让用户看起来很奇怪)。
然后,您可以从进行搜索过程的桌面应用程序中查找“我的特殊页面就绪”浏览器窗口,如果找不到,则启动浏览器;否则你不会。与研究如何要求IE(或您正在使用的其他浏览器)告诉您其打开的标签中的某个变量是否存在并且具有值(再次,如果可能的话)相比,它相当简单。