信大家在使用一些软件的时候会发现,只要点击了它们的一些网页广告就会运行一些推广软件或者是官方软件。它们是怎么实现的呢?其实方法很简单,听来群网慢慢道来。
下面链接是微软MSDN上的说明,为了大家易懂,所以在这里分享给大家:http://msdn.microsoft.com/en-us/library/aa767914%28v=vs.85%29.aspx
当然,或许还有更复杂的方法,小编只举一个简单的例子。
此方法分两部份:1. 注册表代码部份; 2. HTML代码部份
1.注册表代码:
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\laiqun] @="laiqun Protocol" "URL Protocol"="" [HKEY_CLASSES_ROOT\laiqun\DefaultIcon] @="C:\\WINDOWS\\NOTEPAD.EXE" [HKEY_CLASSES_ROOT\>laiqun\shell] @="" [HKEY_CLASSES_ROOT\laiqun\shell\open] @="" [HKEY_CLASSES_ROOT\laiqun\shell\open\command] @="\"C:\\WINDOWS\\NOTEPAD.EXE\" "
注释:laiqun代表链接前缀如:[laiqun://], 可修改为您想要的前缀。
C:\WINDOWS\NOTEPAD.EXE\ 代表需要执行EXE的路径(可执行文件),可替换您想运行的程序。
修改完后保存,将TXT文件重命名为【文件名.Reg】然后运行就加入注册表中(如下图)
注册表代码
2.html代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <div> <a href="laiqun://">此处文字按需修改</a> </a> </div> </body> </html>
把上面的html代码复制到notepad++,修改完成后点击保存,然后把TXT后缀修改成html即可(如下图)。
HTML代码
打开html文件点击里面的链接就能直接打开笔记本,我里面路径写的是记事本程序的路径,所以点击的时候是打开记事本,这个文件路径可以在注册表程序中修改。
注意:编辑代码建议使用 notepad++等专业文本编辑器,不建议使用电脑自带的记事本。
好了,关于 html(网页)运行本地程序(exe文件)的方法与源码 的教程就到这里,谢谢大家支持。
如果大家有什么不明白的地方,可以在下方评论、留言。
在做web应用的时候,我们经常会遇到在web中调用本地应用程序的问题,例如在web中点击一个按钮,然后打开自己写的或者别人的应用程序。上网比较留意的同学应该会发现,想qq客服,淘宝的阿里旺旺客服都会有这样的效果。
其中qq的聊天按钮已经开源,你也可以写到自己的网页中,详见http://wp.qq.com/index.html。
下面我主要介绍一种现在主流的处理方法,这种方法在网上的其他地方也有,但是都是转来转去,而且写得不详细,对于初学者来说,很难看懂,并仿照着处理。所以这篇文章不算原创,只能说是对网上的文章进行详细说明,便于大家使用和仿照。
自己在做《电能计量仿真实训系统》中,需要在B/S系统中调用C/S仿真系统,并传入几个参数,尝试着用js调用activeObject来处理,但是这个涉及到安全性的问题,而且只能在ie下才能实现。
备注:这个项目是用Java完成的,包括c/s部分也是用Java swing做的,所以我遇到的问题是在web上调用java打包之后jar应用程序,难度比web调用exe多了一步工作。
这个方法主要思路是利用自定义URL Protocol来调用应用程序。浏览器在解析到自定义URL Protocol之后,会寻找注册表,然后通过注册表启动相应的程序,然后启动改程序,传入参数。对于我这个项目而言,主要思路是利用这个自定义URL Protocol的方法,打开一个c#的应用程序,在这个程序中再调用系统命令,打开jar应用程序,并传入参数。主要实现步骤如下:
1.添加自定义URL Protocol
[plain] view plain copy
在#内的为自定义URL Protocol的注册表信息,我对每一行说明一下:第一行是注册表工具的版本信息,可以自己改一改,或者自己导入任意一个注册信息,把这一行复制过来就行了;第二行中的Simu就是在HKEY_CLASSES_ROOT下面添加一个Simu树,其中Simu的名称就对应着自定义URL Protocol的名称,在web中调用的时候需要这个名称;第三行中的"x:\simu\Simulink.exe"是指定应用程序的路径,注意只能是exe的程序;第四行是协议的名称,可以是任意字符串,后面不会用到;第五行表示在Simu中再加一个分支,照抄,不用管;第六行中的x:\simu\Simulink.exe也是对应的程序路径,后面的1照抄;第七行同第五行;第八行同第五行;第九行同第五行;第十行也是将路径换成自己的程序路径即可,其中%1表示到参数,参数可以在你的程序simulink.exe中解析得到。分析毕。
将#之间的内容复制到一个txt文档中,修改后缀名为.reg,双击该文件即可直接导入到注册表中。如下图:
2.编写C#程序(simulink.exe)调用Jar应用程序
simulink.exe程序就是上述注册表中指定的程序,即web上点击按钮之后,启动的程序。
考虑到程序配置的简易和后期维护的方便,将jar程序的路径放到环境变量中,key对应为EMES_Simu,value对应为simulink.jar程序的绝对路径。
由此可得,对于simulink.exe的主要任务就是:
main(string[] args) {
/**程序流程如下:
*第一步:分析windows系统中的环境变量,得到环境变量为EMES_Simu的值(这个值是windows系统中Simulink.jar文件的绝对路径)。设为String pathValue;
*第二步:构造调用simulink.jar文件的系统命令。大致结构是:String cmdString,=“java -jar”+ pathValue + args[0] + " " + args[1] + " " args[2] + " " args[3] + " " args[4] + " " args[5];
*第三步:调用系统命令cmdString,执行Java应用程序,本程序主界面隐藏或者退出(只要不影响java应用程序的运行即可,并且java程序退出之后c#程序必须要退出)
**/
}
大家可能会思考这些功能用C语言即可完成,何必用c#的gui程序,这是因为c语言的控制台程序运行系统命令之后,控制台的黑屏会一直保留,即使你想尽办法让它最小化,隐藏或者退出,在启动的时候也会有一个黑屏一闪而过,极不美观,使用c#的gui程序,让程序的界面一直隐藏而不显示,就不会有这种一闪而过的感觉了。(当然你也可以用其他的语言或者其他方法处理了,这一点不限制)
3.在web中调用自定义协议启动程序
调用协议很简单,就是一个链接即可,如下所示:
<a href="Simu://hello">SIMU</a>
需要指出的是:在标题1中的第10行注册表中代码中的%1表示传入参数,就是对应这此处的Simu://hello,解析之后就可以得到参数hello了。
效果如下图所示:
(1)web页面
(2)点击之后
(3)点击启动程序
图中可以看到后面的黑屏就是c程序调用系统命令的界面,登陆界面就是自己的java swing程序。调用成功!
4.还存在的问题
(1)路径问题
利用这种方法,还存在一个问题,这个问题在标题3(3)中的图片就可以看到,在后面的黑屏中有报错,这是因为路径问题造成的。在程序中,引用资源等都习惯使用相对路径,在web中调用c#程序之后,c#中的相对路径就是浏览器所在的路径,在c#中调用系统命令之后,在java程序中的相对路径就是c#程序的路径了!
对于这个问题的解决方法:(a)使用绝对路径,所谓绝对路径简单的说就是带盘符的路径。(b)解析路径,在生成的相对路径中解析出程序真正需要的路径。
askBuilder 是基于Electron开发的,源代码就是html+js+css,都在 TaskBuilder.exe程序所在目录的resources/app子目录内,下载安装包解压后就能看到。
特性:
相对于现在市面上很多类似OA系统的、以表单和流程为核心的低代码开发平台,TaskBuilder 能实现更复杂的业务应用,简单的功能通过向导一步一步操作即可实现,复杂的功能可以通过编写脚本实
现。
*请认真填写需求信息,我们会在24小时内与您取得联系。