使用php网页调用客户端应用程序

「已注销」 2012-10-15 01:57:14
【下面是别人写的,但是我进行到:打开运行测试了,测试是可以的,但是就是不知道怎么用网页去调用这个命令啊?请问有人知道没有,请给小弟讲一下,3Q!】
参照网上一段例子,本人已经试验通过,且用于正式项目。希望您也能成功
例子:
说到单点登录,往往是和Portal(门户)是离不开的。通常企业中会有许多应用,WEB的或CS的。而做Portal的时候往往是做成WEB的。这时候,用户登录Portal后,如何从Portal启动本地的CS程序,就成为需要解决的问题。
不知道大家是如何解决的,我的做法是,自己实现一个协议(就象迅雷/电驴/网络蚂蚁那样),在Portal上实现一个形如
协议名称://应用名称/作业?action=动作¶m1=参数1¶m2=参数2…
这样的例子可能是(我们协议名是用公司简称,这里我就用foo):
<a href=”foo://erp/order?action=query&owner=hydonlee”>我的订单</a>
通过这样的设计,让浏览器象处理http协议的链接一样,把请示发送给我们的应用。
那如何让浏览器将这个链接发送给我们的协议处理器呢?这就需要向系统中注册一下(Windows下),注册表如下:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\foo]
@="URL: foo Application 协议"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\foo\DefaultIcon]
@="d:\\workspace\\fooPortal\\bin\\client\\foo.protocolhandler.exe,1"
[HKEY_CLASSES_ROOT\foo\shell]
[HKEY_CLASSES_ROOT\foo\shell\open]
[HKEY_CLASSES_ROOT\foo\shell\open\command]
@="\"d:\\workspace\\fooPortal\\bin\\client\\foo.protocolhandler.exe\" \"%1\""
怎么样?是不是很简单?其实将这个加入注册表之后,你可以开始->运行,输入:foo://test/ 回车,来测试你的协议处理器了!windows系统会把网址作为参数提供给命令行。
注册协议处理器的C#代码如下,我是写在协议处理器的类中的:
private void FooProtocolRegister() {
// copyright(c) hydonlee, 转载请注明原址
RegistryKey cr = Registry.ClassesRoot;
RegistryKey Fookey = cr.CreateSubKey("Foo");
//添加Foo键
Fookey.SetValue("", "URL: Foo Application 协议");
Fookey.SetValue("URL Protocol", "");
//添加DefaultIcon
RegistryKey iconKey = Fookey.CreateSubKey("DefaultIcon");
iconKey.SetValue("", string.Format("{0},1", Application.ExecutablePath.ToLowerInvariant()));
//添加Shell Key
RegistryKey shellKey = Fookey.CreateSubKey("shell");
RegistryKey openKey = shellKey.CreateSubKey("open");
RegistryKey commandKey = openKey.CreateSubKey("command");
commandKey.SetValue("", string.Format("\"{0}\" \"%1\"", Application.ExecutablePath.ToLowerInvariant()));
Fookey.Close();
}
这样,由浏览器的链接,已经传递到我们本地的应用中了,剩下的事情就比较简单了。协议处理器分析这个地址,呼叫相应的作业插件,并将参数传入。
简单来说就是:通过协议地址模型,Portal生成链接->浏览器发起请求->协议处理器分派-->各应用插件启动作业
...全文
213 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2012-10-15
  • 打赏
  • 举报
回复
我不知道这个1楼那个方法可以用不?怎么用呢?
「已注销」 2012-10-15
  • 打赏
  • 举报
回复
请各位大虾支持一下小弟!!!

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧