如何在Web App和Windows窗体应用程序之间进行交互

时间:2008-09-24 08:34:58

标签: asp.net winforms web-applications

我遇到Web应用程序需要的问题(在用户通过Javascript进行交互之后)
1)打开Windows窗体应用程序
2)向app发送参数(例如ID)

相应地,Windows窗体应用程序应该能够 1)将参数发送回Web应用程序(更新URL正常)
2)在新的浏览器中打开Web App,如果它不存在的话 如果打开许多浏览器窗口,则更新正确的浏览器窗口非常重要。

Windows窗体应用程序在ASP.NET中 浏览器是IE6 +
应用程序是受控制的,并且是特定组织的内部应用程序,因此这不是启动自定义应用程序的问题。

问题A)这可能吗?
问题B)如何从Web App向打开的Windows窗体应用程序发送参数?
问题C)如果更新Web应用程序,如何确保定位正确的浏览器?

8 个答案:

答案 0 :(得分:6)

你所要求的是可能的,但似乎很尴尬。

出于安全考虑,尝试从网页调用应用程序不是您可以做的事情。但是,您可以创建一个与某种类型的文件相关联的桌面应用程序,然后在网页上使用内容类型,以确保在打开具有此类型的URL时调用您的应用程序。它类似于MS Office处理.doc或.xls文档的方式,或者Media Player打开.mp3或.wmv文件。

第二部分(从您的应用程序打开特定网页)更容易。 您应该知道网页的地址是否创建了包含所需参数的URL字符串,并在默认浏览器中打开它(有很多关于如何操作的示例,下面是一个示例)。

System.Diagnostics.Process.Start("http://example.com?key=value");

如果您想在已打开的浏览器中更新页面或使用您选择的浏览器(即IE6而不是Opera或Chrome),那么您将不得不做一些功课,但它仍然很容易。

答案 1 :(得分:2)

PokeIn库可以实时/按用户将桌面应用程序连接到您的Web应用程序。此外,由于其反向ajax状态管理,您可以将两个应用程序视为一个。

答案 2 :(得分:1)

退房 http://msdn.microsoft.com/en-us/library/8c6yea83(VS.85).aspx

在网页中使用VBScript,您可以调用打开的Windows窗体应用程序并向其发送密钥。

这仅适用于IE,您需要调整安全设置以允许ActiveX。

答案 3 :(得分:1)

查看“注册协议”(例如herehere)。我知道Skype这样做可以通过网页拨打电话。但是在win应用程序中可能需要进行一些更改以拦截URL中的参数 我没试过,但应该可以

答案 4 :(得分:0)

不,我不认为这是可能的 想想病毒/木马/间谍软件。如果可以从纯HTML页面启动应用程序,那么安装恶意软件将非常容易 浏览器旨在阻止您这样做。

答案 5 :(得分:0)

您可以使用clickonce来部署和启动表单应用程序 - 这应该负责将参数发送到应用程序。

答案 6 :(得分:0)

虽然这可能不完全适合您的应用程序,但使用Web服务和表单呢?

此外,您可以传递参数以确保IE6,而不是Firefox打开。

System.Diagnostics.Process.Start("c:\ie6\ie6.exe http://www.example.com/mypage");

答案 7 :(得分:0)

好的,所以我实际上找到了网络的线索 - > winform part。

以下代码是从一个将参数发送到winform应用程序的Web应用程序发给我的。我假设这个解决方案有一些安全因素在起作用(例如允许在网页中运行VBScript(和ActiveX?)。但这对我来说没问题。

代码:

<script type="text/vbscript" language="vbscript">
<!--
Function OpenWinformApp(chSocialSecurityNumber)
Dim oWinformAppWebStart
Set oWinformAppWebStart = CreateObject("WinformAppWebStart.CWinformAppWebStart")
oWinformAppWebStart.OpenPersonForm CStr(chSocialSecurityNumber)
End Function
-->
</script>