如何在Web App和Windows窗体应用程序之间进行交互
我有一个Web应用程序需要(在用户通过Javascript与用户互动之后)的问题
1)打开Windows窗体应用程序
2)向应用发送参数(例如ID)
相应地,Windows窗体应用程序应该能够
1)将参数发送回Web应用程序(更新URL即可)
2)在新浏览器中打开Web应用程序(如果不存在)
如果打开了许多浏览器窗口,则必须更新正确的浏览器窗口,这一点很重要。
Windows窗体应用程序在ASP.NET中
浏览器是IE6 +
这些应用程序是受特定组织控制且内部的,因此这不是启动自定义应用程序的问题。
问题A)这可能吗?
问题B)如何从Web应用程序向打开的Windows Forms应用程序发送参数?
问题C)如果更新Web App,我如何确保使用正确的浏览器?
解决方案
不,我认为不可能。
考虑病毒/木马/间谍软件。如果可以仅从HTML页面启动应用程序,则安装恶意软件将非常容易。
浏览器旨在防止我们这样做。
我们可以使用clickonce来部署和启动表单应用程序,这应注意将参数发送到应用程序。
我们要的是可能的,但看起来很尴尬。
出于安全考虑,我们无法尝试从网页上调用应用程序。但是,我们可以制作一个与某种文件类型相关联的桌面应用程序,然后在网页上使用content-type来确保在打开具有这种类型的URL时调用应用程序。这将类似于MS Office处理.doc或者.xls文档或者Media Player打开.mp3或者.wmv文件的方式。
第二部分(从应用程序中打开特定的网页)更加容易。
我们应该知道网页的地址,请使用所需的参数创建一个URL字符串,然后在默认浏览器中将其打开(有很多有关此操作的示例,下面是一个示例)。
System.Diagnostics.Process.Start("http://example.com?key=value");
如果我们想在已经打开的浏览器中更新页面或者使用自己选择的浏览器(即始终使用IE6而不是Opera或者Chrome),则需要做一些功课,但这仍然很容易。
退房
http://msdn.microsoft.com/zh-CN/library/8c6yea83(VS.85).aspx
在网页中使用VBScript,我们可以调用一个打开的Windows Forms应用程序并将其发送密钥。
不过,这仅适用于IE,并且我们需要调整安全设置以允许ActiveX。
查看"注册协议"(例如,此处和此处)。我知道Skype这样做是为了从网页拨打外向电话。但是在win应用程序中可能需要进行一些更改以拦截url中的参数。
我没有尝试过,但是应该可以
尽管这可能不完全适合应用程序,但是如何使用Web服务和表单呢?
另外,我们可以传递参数以确保IE6(而不是Firefox)打开。
System.Diagnostics.Process.Start("c:\ie6\ie6.exe http://www.example.com/mypage");
好的,所以我实际上找到了网络的线索-> winform部分。
以下代码是从将参数发送到winform应用程序的Web应用程序传递给我的。我认为该解决方案具有一定的安全性(例如允许在网页上运行VBScript(和ActiveX?)。
代码:
<脚本类型=" text / vbscript"语言=" vbscript"> <!- 函数OpenWinformApp(chSocialSecurityNumber) 昏暗的oWinformAppWebStart 设置oWinformAppWebStart = CreateObject(" WinformAppWebStart.CWinformAppWebStart") oWinformAppWebStart.OpenPersonForm CStr(chSocialSecurityNumber) 结束功能 -> </ script>