2010-03-31 55 views
2

好的,所以我们有一个在线下载商店通过我们的软件访问。最近我们已经请求允许通过普通浏览器进行下载,并且只需要打开一个下载页面就很容易。问题在于,有两个下载链接的人会感到困惑,一个用于软件,另一个用于他们的网络浏览器,所以我们想区分这两者,只显示相关的下载链接。如何区分.net WebBrowser组件和实际的浏览器?

从我收集到的.net WebBrowser组件与IE相同,并使用相同的用户代理,因此我们不能使用它,除非我们使软件中的WebBrowser继承以使其使用特定的用户代理。这是更明智的选择,但我们不得不推出另一个更新的版本,这不太理想。

有没有其他方法可以判断某人是否通过.net组件访问网站?我唯一的选择是将商店复制到具有不同下载链接的不同地址并发送给那里的人。这又是可行的,但并不理想。

回答

1

检查window.external是否为空。 IE实现window.external具有像AddSearchProvider这样的方法,其中大部分时间WebBrowser.ObjectForScripting为null。

+0

这工作得很好,即使在IE6虚拟硬盘上微软提供。 – Septih 2010-04-06 09:38:21

0

我不确定是否有更好的方法来做到这一点,但这里有一个想法... WebBrowser控件有一个属性Document,它允许您访问表示已加载文档的DOM对象(在页面之后被加载)。该对象有InvokeScript method,您可以使用该对象在加载的页面中运行一些JavaScript。

你可以写一个简单的JavaScript函数,说hideWebDownload()这将在应用程序在本地运行的视图切换到使用的视图,然后从你的WinForms应用程序调用它承载WebBrowser控制:

webCtrl.Document.InvokeScript("hideWebDownload"); 

默认该页面的视图将显示web的下载链接,并在本地应用程序中调用此功能将视图切换到本地下载链接。

0

将您的软件传递给URL的查询字符串中的不可见(对用户)值。

琐碎看看是否存在。