這段時間要寫一個桌面軟件,比來比去沒有滿意的,要么不好看,要么不好用,要么打包體積太大。所以就有了這個小項(xiàng)目——easy-window
。
easy-window 是一個旨在簡化桌面開發(fā)難度的通用窗體,它可以讓你使用當(dāng)前主流的HTML5技術(shù)快速地創(chuàng)建Windows桌面應(yīng)用程序。創(chuàng)作桌面應(yīng)用,不需要掌握QT,C++,C#,Java那些繁瑣的東西,只要會創(chuàng)建網(wǎng)頁就可以。同時相較于NW.js
和Electron
,使用方式更加簡潔,體積更小(只有幾M)。
軟件界面可以有多絢,就看想象力了。閑話不多說,先來看看本工具可以創(chuàng)建哪些窗體應(yīng)用吧。
如果要運(yùn)行示例程序,只需下載easy-window.exe
文件,samples
文件夾和后綴名為.vbs
的文件,運(yùn)行對應(yīng)的vbs
文件即可??梢孕薷?code>vbs文件中對應(yīng)的參數(shù)調(diào)整窗體樣式。vbs
參數(shù)示例說明:
Dim shellSet shell = WScript.CreateObject("WScript.Shell") shell.run "easy-window.exe -url https://www.baidu.com -title 百度首頁"
其中easy-window.exe
是渲染窗體的主程序,-url
指定了要顯示的頁面,-title
設(shè)置窗口標(biāo)題為百度首頁
,運(yùn)行效果如下圖:
vbs
文件不是必須的,可以直接在cmd控制臺中運(yùn)行easy-window.exe -url https://www.baidu.com -title 百度首頁
,效果是一樣的。參數(shù)說明
。bool類型值只能是true
或者false
參數(shù) | 類型 | 說明 |
---|---|---|
url | string | 網(wǎng)頁地址,相對地址,絕對地址,遠(yuǎn)程網(wǎng)址均可 |
timeout | int | 等待頁面加載超時時間,單位:毫秒 |
icon | string | 窗體圖標(biāo)路徑 |
title | string | 窗體標(biāo)題 |
minbox | bool | 最小化窗體按鈕,默認(rèn)值:true |
maxbox | bool | 最大化窗體按鈕,默認(rèn)值:true |
minmax | bool | 限定窗口縮放范圍,默認(rèn)值:false |
border | bool | 窗體是否有邊框,默認(rèn)值:true |
resizable | bool | 窗體是否可縮放,默認(rèn)值:true |
shadow | bool | 窗體邊框是否有陰影,默認(rèn)值:false |
posx | int | 窗體初始橫坐標(biāo) |
posy | int | 窗體初始縱坐標(biāo) |
width | int | 窗體寬度 |
height | int | 窗體高度 |
contextmenu | bool | 是否啟用鼠標(biāo)右鍵菜單,默認(rèn)值:true |
layered | bool | 是否是不規(guī)則窗體,默認(rèn)值:false |
toolwindow | bool | 是否是彈窗工具窗體,默認(rèn)值:false |
topmost | bool | 窗體是否置頂,默認(rèn)值:false |
內(nèi)置擴(kuò)展JS函數(shù)的作用是彌補(bǔ)Javascript在開發(fā)桌面應(yīng)用時,無法調(diào)用Windows api的不足。使用這些擴(kuò)展的JS函數(shù)的時候就跟調(diào)用原生的JS函數(shù)一樣方便,只需要在函數(shù)前邊加上external.
即可。
使用示例:
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"><body> <button onclick="loadFile()">打開文件</button> <script> function loadFile(){ //選擇文件 var filePath = external.openFile('所有文件|*.*|文本文件(.txt)|*.txt|'); //讀取并顯示文件 external.alert(external.readFile(filePath), '您選擇的文件內(nèi)容如下'); } </script></body></html>
運(yùn)行效果
external.openFile()
打開了文件選擇窗口,選擇文件之后,該函數(shù)返回了選擇的文件路徑。external.readFile()
則實(shí)現(xiàn)了本地文件的讀取。函數(shù) | 說明 |
---|---|
hitCaption() | 主要用于綁定鼠標(biāo)拖動窗體。比如,在無邊框或者不規(guī)則窗體中,對指定html元素綁定該函數(shù)即可實(shí)現(xiàn)鼠標(biāo)拖動該元素的功能,示例:<img src="images/ecology-heart.png" onmousedown="external.hitCaption()"> ,詳情參見不規(guī)則窗體示例 |
hitMax() | 最大化窗體 |
hitMin() | 最小化窗體 |
close() | 關(guān)閉窗體 |
alert(text, title) | 提示框,text :提示內(nèi)容,title :提示窗口標(biāo)題 |
openFile(fileType, title) | 打開文件,fileType :文件類型(所有文件|*.*|文本文件|*.txt|), title :選擇文件窗口標(biāo)題。參數(shù)均非必填 |
openDir(dir, subTitle, title) | 打開目錄,dir :初始目錄, subTitle :子標(biāo)題, title :標(biāo)題。參數(shù)均非必填 |
saveFile(fileType, title) | 保存文件,fileType :文件類型(所有文件|*.*|文本文件|*.txt|), title :窗口標(biāo)題。參數(shù)均非必填 |
readFile(path) | 讀取文件,path :文件路徑 |
writeFile(path, text) | 寫文件,path : 文件路徑, text :文件內(nèi)容 |
clipRead() | 讀取剪貼板內(nèi)容 |
clipWrite(text) | 將內(nèi)容寫入剪貼板,text :文本內(nèi)容 |
getMousePos() | 獲取鼠標(biāo)位置 |
getPos() | 獲取窗體位置 |
setPos(x,y,width,height) | 設(shè)置窗體位置和大小,x :橫坐標(biāo),y :縱坐標(biāo),width :寬度,height :高度。寬高參數(shù)可選 |
getScreen() | 獲取屏幕寬高 |
setIcon(iconPath) | 設(shè)置窗體圖標(biāo) |
setTitle(text) | 設(shè)置窗體標(biāo)題 |
setTopmost(state) | 窗體是否置頂,state :true/false |
本項(xiàng)目主要目的在于簡化桌面窗體開發(fā),本身功能有限。如果需要更多功能,有兩種方案:
miniblink
(精簡瀏覽器內(nèi)核)做渲染,瀏覽器支持的大部分功能基本都支持,所以可以通過Ajax
或者Websocket
與其它服務(wù)器語言通信,更多功能由其他語言實(shí)現(xiàn),其實(shí)就是用開發(fā)網(wǎng)站那一套開發(fā)桌面軟件。aardio
語言開發(fā),您可以自行修改編譯源碼,然后打包,替換本項(xiàng)目的easy-window.exe
即可。如果你對本項(xiàng)目感興趣,歡迎使用,共同探討完善。
項(xiàng)目地址: https://github.com/lixk/easy-window
aardio 地址 http://www.aardio.com/
miniblink 地址 https://weolar.github.io/miniblink/