`

像打开QQ和迅雷一样在网站中点击打开本地的应用

阅读更多

 

例子:

说到单点登录,往往是和Portal(门户)是离不开的。通常企业中会有许多应用,WEB的或CS的。而做Portal的时候往往是做成WEB的。这时候,用户登录Portal后,如何从Portal启动本地的CS程序,就成为需要解决的问题。
不知道大家是如何解决的,我的做法是,自己实现一个协议(就象迅雷/电驴/网络蚂蚁那样),在Portal上实现一个形如
协议名称://应用名称/作业?action=动作&param1=参数1&param2=参数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="打开客户端程序"> 



 

0
4
分享到:
评论

相关推荐

    html页面打开QQ.exe等本地应用程序

    html页面打开QQ.exe等本地应用程序

    类似qq打开拍照和本地相册

    标题中的“类似qq打开拍照和本地相册”指的是一个应用程序或者功能模块,它模拟了QQ应用中的拍照和访问本地相册的功能。这个功能在许多移动应用程序中都非常常见,特别是那些需要用户上传图片或进行图像处理的应用。...

    HTML制作超链接QQ号,点击后启动QQ聊天框

    在网页设计中,HTML(HyperText Markup Language)是用于创建网页的基本标记语言。当我们想要在网页上添加一个...在实际应用中,还可以结合CSS(Cascading Style Sheets)进行样式定制,使链接更符合网站的整体设计。

    c#打开QQ编程 Process 应用

    在标签“c#打开qq QQ c#”中,我们可以看到这是关于C#编程环境下与QQ应用程序交互的讨论。结合提供的文件“io_1”,虽然具体内容未知,但我们可以推测它可能包含了一些输入/输出(I/O)操作的示例,比如读取QQ安装...

    页面打开QQ聊天

    在IT行业中,实现“页面打开QQ聊天”的功能通常涉及到网页应用与桌面应用程序的交互,这是一种跨平台、跨应用的交互技术。在这个场景下,我们主要关注的是如何利用JavaScript或者其他前端技术来触发用户的本地QQ程序...

    C#打开关闭本地应用程序

    在C#编程中,操作本地应用程序的打开与关闭是常见的任务,这涉及到进程管理的知识。本文将深入探讨如何使用C#来实现这一功能,并提供相关的代码示例。 首先,了解进程的基本概念至关重要。在计算机系统中,进程是...

    从网页Web上调用本地应用程序(.jar、.exe)的主流处理方法

    在做 web 应用的时候,我们经常会遇到在 web 中调用本地应用程序的问题,例如在 web 中点击一个按钮,然后打开自己写的或者别人的应用程序。这种方法可以应用于各种场景,例如 QQ 客服、淘宝的阿里旺旺客服等。 ...

    迅雷QQ综合信息查询助手

    在使用迅雷QQ综合信息查询助手时,用户应确保自己的操作不侵犯他人隐私,同时遵守迅雷和QQ的服务条款,以免引发不必要的法律纠纷。 总的来说,迅雷QQ综合信息查询助手以其集成化、便捷化的特性,为用户提供了跨平台...

    临时打开QQ聊天窗口

    "临时打开QQ聊天窗口"这个话题涉及到的是如何在QQ应用程序中快速启动与特定联系人的临时会话,无需事先添加对方为好友。这是一项非常实用的功能,尤其在需要快速沟通但又不想或无法添加对方为好友的情况下。 首先,...

    html启动本地应用

    这种技术在现代Web开发中被广泛应用,比如实现单页应用(SPA)的深度链接,或者在Web应用中调用桌面应用的功能。 在给定的描述中,我们看到一个流程: 1. **双击exe文件**:这指的是执行一个可执行文件(`.exe`),...

    网页防封微信qq打开网页时提示浏览器打开,防止微信qq封杀网页

    标题中的"网页防封微信qq打开网页时提示浏览器打开"指的是当用户尝试通过微信或QQ内置浏览器访问网页时,系统会自动弹出提示,建议用户使用系统自带的浏览器(如Safari、Chrome等)来打开网页。这样不仅可以提高用户...

    打开QQ并且让它自己输入用户名和密码的vbs脚本.pdf

    2. **等待界面响应**:由于应用程序的启动到响应需要一定的时间,因此需要加入延时或循环判断逻辑来确保QQ界面已经完全加载完毕。 3. **模拟键盘输入**:使用`SendKeys`方法模拟用户在登录界面输入用户名和密码的...

    Web页面打开外部EXE程序

    在IT领域,Web页面打开外部EXE程序是一个常见的需求,特别是在提供特定客户端服务或与桌面应用集成时。这种技术主要用于创建交互式用户体验,比如网页上的QQ客服功能,用户可以直接从浏览器启动应用程序,无需离开...

    外部链接本地打开X3.2

    X3.2中,外部链接的本地打开功能意味着当用户点击论坛中的外部链接时,系统会尝试在当前浏览器窗口或者新标签页中直接打开这些链接,而不是跳转到其他外部浏览器或应用。这提供了更好的用户体验,用户无需离开论坛...

    js 右键弹出QQ在线客服代码,点击右键查看效果,兼容主流浏览器

    总的来说,这个项目利用JavaScript实现了鼠标右键点击弹出QQ在线客服的功能,旨在提高网站的用户交互性,通过合理的事件监听和DOM操作,以及对浏览器兼容性的考虑,使得这个功能可以在主流浏览器中顺畅运行。

    打开桌面QQ_labview_DEMO_

    在"打开桌面QQ"DEMO中,可能有一个简单的用户界面,让用户点击一个按钮来启动QQ。这个按钮可能连接到"启动应用程序"的VI,当按钮被触发时,就会执行启动QQ的逻辑。 这个DEMO对于初学者来说,是一个很好的学习实例,...

    网页打开客户端应用程序

    网页打开客户端应用程序是一种技术,允许用户在浏览网页时直接触发本地计算机上的应用程序。这一功能常见于许多在线服务,如社交网络、即时通讯软件等,它能够无缝地将线上交互与线下应用结合,提升用户体验。例如,...

    Mac OS 中通过Shell命令执行App应用的快捷方式

    在 Mac OS 中,通过 Shell 命令执行 App 应用的快捷方式可以通过创建一个文件夹,存放打开各个 App 的 sh 命令文件,然后在该文件夹中创建 sh 命令文件,例如 qq.sh,以打开 QQ 应用程序。首先,在控制台中输入 open...

    实现像QQ消息窗口一样

    在Windows操作系统中,任务栏主要负责管理所有打开的应用程序和窗口。通过调整窗口的属性和行为,可以使自定义的窗口具备特定的功能,例如像QQ消息窗口那样独立显示在任务栏上。 #### 核心代码解析 在提供的示例...

Global site tag (gtag.js) - Google Analytics