5

我有一个问题,Web 应用程序需要(在用户通过 Javascript 交互之后)
   1)打开 Windows 窗体应用程序
   2)向应用程序发送参数(例如 ID)

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

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

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

4

8 回答 8

6

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

出于安全考虑,您不能尝试从网页调用应用程序。但是,您可以创建一个与特定类型文件关联的桌面应用程序,然后在网页上使用 content-type 以确保在打开具有此类型的 URL 时调用您的应用程序。它类似于 MS Office 处理 .doc 或 .xls 文档或媒体播放器打开 .mp3 或 .wmv 文件的方式。

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

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

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

于 2008-09-24T08:44:32.773 回答
2

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

于 2012-04-23T22:31:19.970 回答
1

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

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

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

于 2008-09-24T08:53:53.030 回答
1

查看“注册协议”(例如此处此处)。我知道 Skype 这样做是为了从网页拨打电话。但可能需要在 win 应用程序中进行一些更改以拦截来自 url 的参数。
我还没有尝试过,但它应该是可能的

于 2008-09-24T15:44:23.653 回答
0

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

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

System.Diagnostics.Process.Start("c:\ie6\ie6.exe http://www.example.com/mypage");
于 2008-09-25T22:59:24.957 回答
0

好的,所以我实际上找到了 web -> winform 部分的线索。

以下代码是从一个将参数发送到 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>

于 2008-09-30T12:35:28.197 回答
0

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

于 2008-09-24T08:41:35.527 回答
0

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

于 2008-09-24T08:42:18.067 回答