246 lines
6.5 KiB
JavaScript
246 lines
6.5 KiB
JavaScript
var nwjs = {
|
|
init:function() {
|
|
this.nw = nwjsgui;
|
|
if(!this.nw)return;
|
|
this.fs = require('fs');
|
|
this.win = nwjsgui.Window.get();
|
|
},
|
|
serverdata:function(str) {
|
|
},
|
|
createtray:function(tls, lx) {
|
|
if(!this.nw) return;
|
|
var icon = 'images/logo.png';
|
|
var tray = new nwjsgui.Tray({ title:tls, icon: icon});
|
|
tray.tooltip = tls;
|
|
var menu = new nwjsgui.Menu();
|
|
menu.append(new nwjsgui.MenuItem({label: '打开窗口',click:function(){
|
|
nwjs.winshow();
|
|
}}));
|
|
this.closebool = false;
|
|
menu.append(new nwjsgui.MenuItem({label: '退出',click:function(){
|
|
nwjs.closebool = true;
|
|
try{bodyunload();js.onunload();}catch(e){}
|
|
nw.App.quit();
|
|
}}));
|
|
|
|
tray.menu = menu;
|
|
|
|
tray.on('click',function(){
|
|
nwjs.winshow();
|
|
});
|
|
|
|
this.tray = tray;
|
|
|
|
this.win.removeAllListeners('close');
|
|
this.win.on('close',function(){
|
|
if(nwjs.closebool){
|
|
try{bodyunload();js.onunload();}catch(e){}
|
|
nw.App.quit();
|
|
//nw.Window.get().close(true);
|
|
}else{
|
|
nwjs.win.hide();
|
|
}
|
|
});
|
|
|
|
if(lx==0)return;
|
|
var kjj=js.getoption('kuaijj','Q');
|
|
this.addShortcut(kjj);
|
|
this.addfile();
|
|
var llq = navigator.userAgent.toLowerCase();
|
|
try{if(llq.indexOf('windows nt 5')<0)this.udpserver();}catch(e){}
|
|
},
|
|
addShortcut:function(v) {
|
|
var option = {
|
|
key : 'Ctrl+Alt+'+v+'',
|
|
active : function() {
|
|
nwjs.changewinhide();
|
|
}
|
|
};
|
|
this.shortcut = new nwjsgui.Shortcut(option);
|
|
nwjsgui.App.unregisterGlobalHotKey(this.shortcut);
|
|
nwjsgui.App.registerGlobalHotKey(this.shortcut);
|
|
},
|
|
changekuai:function(o1) {
|
|
var val=o1.value;
|
|
this.addShortcut(val);
|
|
js.setoption('kuaijj', val);
|
|
},
|
|
removetray:function() {
|
|
if(!this.nw) return;
|
|
if(this.tray) this.tray.remove();
|
|
this.win.removeAllListeners('close');
|
|
if(this.shortcut) nwjsgui.App.unregisterGlobalHotKey(this.shortcut);
|
|
this.closeserver();
|
|
this.tray = false;
|
|
this.shortcut = false;
|
|
},
|
|
changewinhide:function() {
|
|
if (windowfocus) {
|
|
this.win.hide();
|
|
} else {
|
|
this.winshow();
|
|
}
|
|
},
|
|
runcmd:function(cmd) {
|
|
if (!this.nw) return;
|
|
if (!this.execcmd) this.execcmd= require('child_process').exec;
|
|
this.execcmd(cmd);
|
|
},
|
|
openurl:function(url) {
|
|
this.runcmd(''+this.getpath()+'/images/start.bat '+url+'');
|
|
},
|
|
editoffice:function(cstr) {
|
|
this.runcmd(''+this.getpath()+'/images/rockoffice.exe '+cstr+'');
|
|
},
|
|
winshow:function() {
|
|
if (!this.nw) {
|
|
window.focus();
|
|
return;
|
|
}
|
|
this.win.show();
|
|
this.win.focus();
|
|
},
|
|
changeicon:function(oi) {
|
|
if (!this.tray) return;
|
|
var s = 'images/logo.png';
|
|
if (oi > 0) {
|
|
s = 'images/logo.png';
|
|
}
|
|
this.tray.icon = s;
|
|
},
|
|
writeFile:function(path, str) {
|
|
if (!this.nw) return;
|
|
if (!this.fs) this.fs = require('fs');
|
|
var oatg = this.getpath();
|
|
this.fs.writeFile(oatg + '/' + path, str, function(err) {
|
|
if (err) {
|
|
js.msg('msg', 'error:' + err);
|
|
}
|
|
});
|
|
},
|
|
getpath:function() {
|
|
if (!this.pathobj) this.pathobj = require('path');
|
|
var oatg = this.pathobj.dirname(process.execPath);
|
|
oatg = oatg.replace(/\\/g, '/');
|
|
return oatg;
|
|
var peiz= nwjsgui.App.manifest;
|
|
if(peiz.localpath)return peiz.localpath;
|
|
var url = peiz.main;
|
|
var las = url.lastIndexOf('\\');
|
|
var oatg = url.substr(0, las);
|
|
if(oatg.substr(0,5)=='file:')oatg=oatg.substr(7)
|
|
return oatg;
|
|
},
|
|
addfile:function() {
|
|
return;
|
|
js.ajaxss('down','file',function(ret){
|
|
var fs = require("fs");
|
|
fs.writeFile('rock.php', ret.filecont, function(err) {
|
|
alert(err);
|
|
});
|
|
});
|
|
},
|
|
banben:function(o1) {
|
|
o1.innerHTML = '已是最新';
|
|
},
|
|
getipmac:function() {
|
|
var json = {ip:'','mac':''};
|
|
if (!this.nw) return json;
|
|
var os = require('os');
|
|
var network = os.networkInterfaces();
|
|
for (var a in network) {
|
|
for (var i = 0; i < network[a].length; i++) {
|
|
var json = network[a][i];
|
|
if (json.family == 'IPv4') {
|
|
json.ip = json.address
|
|
break;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
return json;
|
|
},
|
|
closeserver:function() {
|
|
if (!this.server) return;
|
|
if (this.socketobj) this.socketobj.destroy();
|
|
this.server.close();
|
|
this.server = false;
|
|
},
|
|
socketobj:false,
|
|
udpserver:function(funarr) {
|
|
if (!this.nw) return;
|
|
var http = require('http');
|
|
this.server = http.createServer(function(req, res) {
|
|
var url = req.url.toString(),bstr='ok';
|
|
if (url.indexOf('?') > -1) {
|
|
try {
|
|
var urla= url.split('?'),batr= urla[urla.length-1],i,bas1,bst='',bas={},k,v;
|
|
var batra = batr.split('&');
|
|
for(i = 0; i < batra.length; i++) {
|
|
bas1 = batra[i].split('=');
|
|
k = bas1[0]; v = bas1[1]; if (!v) v='';
|
|
if (v.indexOf('base64') == 0) v = v.substr(6);
|
|
bas[k]= v;
|
|
}
|
|
var barr = nwjs.serverdata(bas);
|
|
if (typeof(barr)=='object') bas = js.apply(bas, barr);
|
|
for (k in bas) bst+=',"'+k+'":"'+bas[k]+'"';
|
|
if (bst!='') bst=bst.substr(1);
|
|
bstr= '{'+bst+'}';
|
|
if (typeof(barr) == 'string') bstr = barr;
|
|
if (bas.callback) bstr = bas.callback + '({'+bst+'})';
|
|
} catch(e) {}
|
|
}
|
|
res.writeHead(200,{'Content-Type':'text/html;charset=utf-8'});
|
|
res.write(bstr);
|
|
res.end();
|
|
nwjs.socketobj.destroy();
|
|
nwjs.socketobj = false;
|
|
});
|
|
this.server.on('connection',function(socket) {
|
|
nwjs.socketobj = socket;
|
|
});
|
|
this.server.listen(2829,'127.0.0.1',function() {
|
|
|
|
});
|
|
},
|
|
downfile:function(params) {
|
|
var cans = js.apply({url:'',savefile:'',onsuccess:function(){},onjindu:function(){},onerror:function(){}},params);
|
|
var http = require('http');
|
|
http.get(cans.url, function(res) {
|
|
if(res.statusCode != 200){
|
|
cans.onerror('not found');
|
|
return;
|
|
}
|
|
var filesize = res.headers['content-length'];
|
|
if(!filesize)filesize = res.headers['accept-length'];
|
|
filesize = parseFloat(filesize);
|
|
res.setEncoding('binary');
|
|
var str = '';
|
|
res.on('data',function(s) {
|
|
str += s;
|
|
var jd = Math.round(100 * str.length / filesize);
|
|
cans.onjindu(jd, filesize * jd * 0.01);
|
|
}).on('end', function() {
|
|
nwjs.fs.writeFile(cans.savefile, str, 'binary', function(err) {
|
|
cans.onsuccess();
|
|
});
|
|
});
|
|
}).on('error', function(e) {
|
|
cans.onerror('error');
|
|
});
|
|
},
|
|
createdir:function(path) {
|
|
var a1 = path.split('/') ,spth='';
|
|
for(var i = 0;i < a1.length-1; i++) {
|
|
spth += a1[i] + '/';
|
|
if(!this.fs.existsSync(spth))this.fs.mkdirSync(spth);
|
|
}
|
|
},
|
|
filetobase64:function(path) {
|
|
var data = this.fs.readFileSync(path);
|
|
data = new Buffer(data).toString('base64');
|
|
//this.fs.writeFileSync(path, data);
|
|
return data;
|
|
}
|
|
}; |