例子:
说到单点登录,往往是和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生成链接->浏览器发起请求->协议处理器分派-->各应用插件启动作业
Activity X插件调用
<script type="text/javascript"> <!-- function runExecutable() { var executableFullPath = 'F:\\ZK\\DownLoadFile\\YodaoDict.exe'; try { var shellActiveXObject = new ActiveXObject("WScript.Shell"); if ( !shellActiveXObject ) { alert('Could not get reference to WScript.Shell'); return; } shellActiveXObject.Run(executableFullPath, 1, false); shellActiveXObject = null; } catch (errorObject) { alert('Error:\n' + errorObject.message); } } // --> </script> <input type="button" onclick="runExecutable()" value="打开客户端程序">
相关推荐
它通过在本地存储用户的登录凭据(通常加密存储,以确保安全),使得用户在下次打开应用时无需重新输入。实现这一功能可能涉及Web存储(如localStorage或cookies)或者Android/iOS的共享首选项。在设计时,需要考虑...
根据给定文件的信息,我们可以提炼出以下几个主要的知识点: ### 一、互联网信息搜索与交流 #### 1....这些知识对于初学者来说是非常实用的,能够帮助他们更好地理解和掌握计算机应用中的基本技能。
在使用代理服务器后,不仅浏览器需要设置,其他应用软件如 QQ、迅雷下载等也需要设置。如果这些应用软件不设置,那么它们将无法连接到互联网。 总结 使用代理服务器可以实现多台电脑共用一个账号上网。通过设置...
当系统没有使用云端时,用普通方法在本地安装软件A后,在注册表系统中有软件A的注册表项集合,在文件系统中有软件A文件集合。同时,注册表系统和文件系统还有系统其它进程的注册表项和文件集合。 软件A和其它系统...
1)点击桌面上“启动我的网站”图标,发现网站没有正常启动,这种情况下,多半是因为你个人的电脑的原因,如果你电脑开启了apache、IIS、迅雷、PPS、P2P等软件,将会干扰网站运行而无法启动,请先关闭这些软件再...
4. **启动应用程序**:WinPE中包含了各种实用工具,如QQ、迅雷等,可以满足基本的聊天和下载需求。 【优化迅雷7】 针对迅雷新版本的性能问题,可以通过第三方辅助工具来改善体验: 1. **迅雷7小助手**:这种工具...
2. 在打开的“本地组策略编辑器”中,导航到“用户配置” -> “管理模板” -> “系统”。 3. 找到“不要运行指定的Windows应用程序”策略,双击打开。 4. 将此策略设置为“已启用”,然后点击“显示”按钮。 5. 在弹...
MikroTik RouterOS是一种路由操作系统,并通过该软件将标准的PC电脑变成专业路由器,在软件RouterOS 软路由图的开发和应用上不断的更新和发展,软件经历了多次更新和改进,使其功能在不断增强和完善。特别在无线、...