JS怎么设置一个链接为桌面快捷方式

JS怎么设置一个链接为桌面快捷方式,第1张

通常比较少人会用到这个功能,不是这个功能不好用,而是浏览器的安全设置规则不允许JS对浏览器外数据的 *** 作,代码如下:

function toDesktop(sUrl,sName){

try  

var WshShell = new ActiveXObject("WScriptShell"); 

var oUrlLink = WshShellCreateShortcut(WshShellSpecialFolders("Desktop") + "\\" + sName + "url"); 

oUrlLinkTargetPath = sUrl; 

oUrlLinkSave(); 

}   

catch(e)   

{   

          alert("当前IE安全级别不允许 *** 作!");   

}

}

你说的应该是将HTML程序打包为桌面程序吧,这里介绍一种简单的方式,利用nodejs的electron打包,下面我简单介绍一下实现过程,主要内容如下:

这里为了更好的说明问题,我新建了一个indexhtml文件,主要内容如下,就是一个简单的按钮提示功能:

浏览器打开后的效果如下:

1首先,安装nodejs,这个直接到官网上下载就行,选择适合自己平台的版本即可,安装完成后,需要将node、npm这些常见命令(即node安装目录)添加到环境变量中,方便后面使用,如下:

2接着就是安装electron和electron-packager这2个包,打包程序的时候要使用到这2个包,至于安装的话,直接在cmd窗口中输入命令“npminstallelectronelectron-packager”就行,如下:

3最后就是打包HTML为桌面程序了,主要步骤如下:

这里为了方便,我新建了一个package目录,把刚才的indexhtml移入到这个目录下,同时下面新建一个packagejson文件和mainjs一个文件,如下:

其中packagejson用于指明打包的基本信息,mainjs用于配置打包的详细信息,其基本内容如下:

packagejson文件:name为应用名称,version为版本号,main为打包配置文件。

mainjs文件:这里用于配置打包的详细信息,可以自行设置,网上资料很多,可以搜一下,我这里简单配置了一下:

接着就是运行打包命令了,cmd切换到刚才的package目录,然后运行命令“electron-packagerHello--win--outHelloApp--arch=x64--electron-version=3010--overwrite”就会自动打包,这里主要需要指明打包的目录、应用名称、输出目录、应用位数、版本号等,详细参数可以到网上搜一下,如下:

打包成功后,就能在输出目录HelloApp下的Hello-win32-x64目录中找到刚才打包好的Helloexe应用程序,双击就能打开,如下:

至此,我们就完成了将HTML打包为桌面应用程序,其实就是用HTML开发桌面程序。总的来说,整个过程很简单,就是配置有些麻烦,只要你熟悉一下相关过程和参数,多练习几遍,很快就能掌握的,当然,你也可以利用其它方式来打包HTML程序,像nwjs,cef等,都可以,网上也有相关教程和资料,感兴趣的话,可以搜一下,希望以上分享的内容能对你有所帮助吧。

使用electron开进行桌面程序的开发,似乎成了WEB前端开发人员转桌面程序开发的首选。近期有一些使用在electron中使用加密锁的需求,学习了一下在Nodejs中通过ffi-napi模块调用动态链接库,把几款加密锁产品的动态库使用javascript封装了一下,实现了electron中使用加密锁功能。

开发过程中遇到了一些问题,踩了一些坑,这里总结记录一下。这里使用接口函数参数类型比较复杂的ROCKEY-ARM的动态链接库来进行开发。

NOTE: javascript封装的ROCKEY-ARM接口模块源码,我已经分享出来,如果只是需要electron或者Nodejs工程中使用ROCKEY-ARM的网友,可以直接使用。

首先需要在nodejs项目中安装调用动态链接库时需要依赖的模块 ffi-napi,ref-napi,ref-array-napi,ref-struct-napi

下面大概介绍一下这几个模块的用途:

向 飞天诚信 购买ROCKEY-ARM加密锁产品,可以获得ROCKEY-ARM的SDK,可以获得Windows和Linux的动态链接库,文件名一般为Dongle_d和libRockeyARMso03。

ffi-napi支持Windows,Linux系统,所以dll和so都可以支持,在不同的 *** 作系统下去加载不同的动态库文件就可以了。加载动态库的方法如下:

Library()第一个参数是dll的路径,Linux系统是so的路径。第二个参数rockeyInterface是动态库导出函数的声明,ROCKEY-ARM的导出函数比较多,我单独拿出来定义。具体下面会讲到。

首先从ROCKEY-ARM中找几个参数简单的函数来声明一下。

首先看一下上面几个接口用到的数据类型有:DONGLE_HANDLE,DWORD,DONGLE_HANDLE ,int,BYTE 这几种。

再看下ffi-napi支持的ref-napi支持的数据类型有以下类型:

参数这里应该用长度一致的数据类型,可以有以下匹配。

声明的写法如下:

一个json,key是动态库导出函数名,比如'Dongle_Open',value是个列表,第一个元素是返回值,第二个元素是参数。其中参数还是个列表。这个ref-napi中有适合类型的,直接写称具体类型即可,比如返回值DWORD和传入的长度int,我这里都用'int'。其他的参数我额外定义了句柄ryHandle、句柄的指针ptrHandle、字节的指针ptrByte。其中ryHandle,ptrryHandle,ptrByte的定义如下:

DONGLE_HANDLE本质是void 类型, void 类型最开始的时候妄图定义一个void的数组,然后用void数组来表示void ,然后发现报断言错误,数组不支持void类型。所以就直接用无符号数来表示void指针,在64位系统是8字节,32位系统是4字节,使用uint类型就可以了。DONGLE_HANDLE 。

在ROCKEY-ARM的函数中也有很多带参数的接口,比如:

拿以上两个函数接口举例,Dongle_Enum中的第一个参数是一个指向DONGLE_INFO结构体的指针,运行后返回设备信息的列表,使用ROCKEY-ARM的时候需要通过枚举函数获得设备信息列表,然后比较产品ID或者硬件ID决定打开哪一个设备。为了方便从枚举函数返回的设备信息中方便的解析出产品ID或者硬件ID等信息,需要把DONGLE_INFO pDongleInfo这个参数声明成一个结构体数组。Dongle_RsaGenPubPriKey()函数中有RSA_PUBLIC_KEY ,RSA_PRIVATE_KEIY 两个结构体指针参数,因为在这里一般用户并不需要解析RSA密钥中的n,d,e等分量,可以直接做作为一个字节数组,直接声明成上面的ptrByte类型即可。所以在声明如下:

调用ffi-napi声明的函数,主要是给自己定义的数据类型赋初值以及获得自定义参数的返回值。下面分别说明。

这里的int,是让函数返回设备的数量,或者传入输入数据的长度或者传出输出数据的长度,所以只要定义一个长度为1的int数组即可,如下:

给传入的数据赋值,只要给下标为0的元素赋值即可。

这个参数是枚举函数传出枚举到设备信息的列表,枚举到多少设备,就传出多少个DONGLE_INFO,所以需要传入足够数量的的DONGLE_INFO,如下:

这个参数一般是作为传入传出数据的缓冲区的,所以创建数组的时候,需要创建足够长的空间,如下:

开发的过程中,踩到一些坑耽误了不少时间,这里总结一下。

ROCKEY-ARM的结构体是按字节对齐的,ref-struct-napi没有找到设置字节对齐的方法。当时声明的结构体如下:

测试的时候会发现定义的结构体和ROCKEY-ARM定义的结构体对齐方式不一样,于是把m_Birthday和m_HID两个成员从reftypesuint64,拆分成左右两个uint32,这样就可以让结构体对齐方式和ROCKEY-ARM的一致。使用m_Birthday和m_HID的时候,需要讲左右两个uint32拼接一些,稍微麻烦一点,但是在没找到配置StructType对齐方的情况,保证结果正确,还是可以接受的。

文件夹的用右键!文件的可能在程序本身,需要用工具打开后修改,有的在安装程序文件夹的icon下,找到替换成同文件名的就好了!系统背景,win7有些版本桌面右键没有个性化,直接在开始菜单的搜索栏,输入“桌面”就能找到可以改的选项!“控制面板\所有控制面板项\显示\桌面背景”

以上就是关于JS怎么设置一个链接为桌面快捷方式全部的内容,包括:JS怎么设置一个链接为桌面快捷方式、有什么方法用html开发桌面软件、Node.js使用ffi-napi,ref-napi,ref-array-napi,ref-struct-napi调用动态库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10213747.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存