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

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

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

如果是VB.net

  1. 在 “项目”菜单上单击 “属性”。
  2. 单击 “应用程序”选项卡。
  3. 选中 “生成单个实例应用程序”复选框。  
  4. 单击 “查看应用程序事件”按钮以打开 ApplicationEvents.vb 文件。
  5. 编写代码
ContractedBlock.gif ExpandedBlockStart.gif 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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值