实现Web页面向windows应用程序发送消息

原文链接:http://www.cnblogs.com/JChenTech/archive/2011/03/09/1978036.html

例如,我们想在浏览器中输入 myTest://openMain让winform程序打开主窗口。我们该怎么做呢?

首先、修改winform程序为单实例模式。

如果是VB.net

  1. 在 “项目”菜单上单击 “属性”。
  2. 单击 “应用程序”选项卡。
  3. 选中 “生成单个实例应用程序”复选框。  
  4. 单击 “查看应用程序事件”按钮以打开 ApplicationEvents.vb 文件。
  5. 编写代码
实现Web页面向windows应用程序发送消息实现Web页面向windows应用程序发送消息View Code
        Private Sub MyApplication_StartupNextInstance(
ByVal sender As Object,
ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupNextInstanceEventArgs
) Handles Me.StartupNextInstance
Dim MsgHandler As String = "myTest://"
Dim Action As String = ""

For Each s As String In e.CommandLine
If s.ToLower.StartsWith(MsgHandler) Then
Action = s.Remove(0, MsgHandler.Length)
End If
Next

Select Case Action
Case "openMain"
Me.OpenForms.Item("MainFrm").Show()
Case Else
End Select
End Sub

C#实现省略。

然后、客户端注册URL协议.

向注册表增加"myTest:"协议,指定程序启动路径及消息格式.

原理:

当一个用户点击一个注册了你的自定义URL协议的链接后,浏览器会启动注册的URL协议的处理器。如果指定shellopen命令在注册表中包含一个%1参数的话,Internet Explorer传递这个URI给注册协议的处理器。这最后的统一资源标识符(URI)被编码(%1);即16进制换码符被转换为等价的UTF-16字符。

[HKEY_CLASSES_ROOT\myTest]
@=""
"URL Protocol"=""

[HKEY_CLASSES_ROOT\myTest\Shell]

[HKEY_CLASSES_ROOT\myTest\Shell\Open]

[HKEY_CLASSES_ROOT\myTest\Shell\Open\Command]
@="\"c:\\WindowsDemo.exe\" \"%1\""

最后,在浏览器中输入 myTest://openMain即可打开程序WindowsDemo的主窗口。

参考:http://msdn.microsoft.com/zh-cn/library/aa767914(en-us,VS.85).aspx

http://msdn.microsoft.com/zh-cn/library/microsoft.visualbasic.applicationservices.windowsformsapplicationbase.startupnextinstance(v=vs.85).aspx

转载于:https://www.cnblogs.com/JChenTech/archive/2011/03/09/1978036.html

上一篇:网页调用桌面应用,注册表应用


下一篇:Proj THUDBFuzz Paper Reading: Generating Highly-structured Input Data by Combining Search-based Test