From 15ae052ccd87e2ea5c8b59849e6f143bbe975a80 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 20 Apr 2020 19:45:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=94=B9win=E4=B8=8B=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E8=BF=9B=E7=A8=8B=E7=9A=84=E6=96=B9=E5=BC=8F=EF=BC=8C?= =?UTF-8?q?=E5=A4=A7=E5=B9=85=E7=BC=A9=E5=87=8F=E8=8E=B7=E5=8F=96=E6=97=B6?= =?UTF-8?q?=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/index.js | 40 +++++++++++++++++------------------ bin/ProcessKiller.exe | Bin 4608 -> 6656 bytes index.html | 4 +--- preload.js | 47 +++++++++++++++++++++++++++++++----------- 4 files changed, 56 insertions(+), 35 deletions(-) diff --git a/assets/index.js b/assets/index.js index 19d312e..c5f7b9c 100644 --- a/assets/index.js +++ b/assets/index.js @@ -6,7 +6,7 @@ CacheIcons = async tasks => { var noCaches = []; if (window.isWin) { for (var t of tasks) { - if (t.Path) { + if (/^[A-z]:\\/.test(t.Path)) { if (localStorage[basename(t.Path, '.exe')] == undefined && !noCaches.includes(t.Path)) noCaches.push(t.Path) } } @@ -63,23 +63,20 @@ search = (t, text) => { var taskinfo = ''; var icon; if (window.isWin) { - if (t.Path) { + if (/^[A-z]:\\/.test(t.Path)) { icon = localStorage[basename(t.Path, '.exe')] } else { icon = WINDOW_DEFAULT_ICON; } var n = (t.ProcessName + t.Description).toUpperCase(); if (n.includes(text)) { - var usr = t.UserName ? t.UserName.split('\\').pop() : '', - title = t.Description ? t.Description : t.ProcessName, - mem = (parseInt(t.WorkingSet) * 100 / window.totalMem).toFixed(2), - path = t.Path ? t.Path : ''; - taskinfo = `
-
${usr}
+ var mem = (parseInt(t.WorkingSet) * 100 / window.totalMem).toFixed(2); + // path = t.Path ? t.Path : ''; + taskinfo = `
-
${title}
+
${t.ProcessName}
M: ${mem}%
-
${path}
`; +
${t.Path}
`; } } else { if (t.app) { @@ -114,20 +111,23 @@ show = text => { utools.onPluginEnter( async ({ code, type, payload }) => { utools.setExpendHeight(0); - // if (window.isWin) { - // utools.setExpendHeight(50); - // $("#tasklist").html(`
Loading...
`); - // $(".load").animate({ "opacity": "0.3" }, 500) - // .animate({ "opacity": "1" }, 500); - // } var db = utools.db.get('iconCache'); if (db) { for (var key in db.data) { localStorage[key] = db.data[key] } } + var initTime = new Date().getTime(); window.tasks = await tasklist(); + var tasksLoadedTime = new Date().getTime(); + tasksLoadedTime -= initTime; + // 读取进程耗时 + console.log(tasksLoadedTime); await CacheIcons(tasks); + var iconsCachedTime = new Date().getTime(); + iconsCachedTime -= (tasksLoadedTime + initTime); + // 缓存图标耗时 + console.log(iconsCachedTime); show(''); utools.setSubInput(({ text }) => { window.text = text; @@ -143,9 +143,9 @@ utools.onPluginEnter( async ({ code, type, payload }) => { $("#tasklist").on('mousedown', '.taskinfo', function (e) { if (1 == e.which) { - kill($(this).attr('name')); + kill($(this).attr('id')); } else if (3 == e.which) { - kill($(this).attr('name'), $(this).children(".path").html().replace(/\\/g, '/')) + kill($(this).attr('id'), $(this).children(".path").html().replace(/\\/g, '/')) } }); @@ -161,9 +161,9 @@ $(document).keydown(e => { switch (e.keyCode) { case 13: if (event.shiftKey) { - kill($(".select").attr('name'), $(".select").children(".path").html().replace(/\\/g, '/')) + kill($(".select").attr('id'), $(".select").children(".path").html().replace(/\\/g, '/')) } else { - kill($(".select").attr('name')); + kill($(".select").attr('id')); } break; case 38: diff --git a/bin/ProcessKiller.exe b/bin/ProcessKiller.exe index 929d2e10a755347978a6ed712ca085c5b1ec9bb2..a3900c85d6932b7754323c334c389b27156bba5c 100644 GIT binary patch literal 6656 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 delta 1102 zcmXX_O=w(I6#mYgdB2mnnK#eOq}YiwO*D^$#%KdE3rm|cBvBNTkVqgnPGf9FhrG$l zvtSV?3-K2<<3*A9gA@^QVPnd37-3=XSm-v_dDm@d(OG@ zcE)xFcHca4^yH_{;I7<+pbTXIn+d&GP7k)fS(bl304(b58Q`CEyW*<~Ro!zIGi6@3 zdYgvHRfjZ4IrSTzD3=GBW|`$BU?8plu>nxBhpGN8jH;)EY(>m8Bla}I6yO%$)j_`P z*@gRF`OLG!G?Q-Rus;LScM85ceBN_BcdrWphq_riG+6~)iksc$qFq1jrJay7+#7uM zy@AVC$W6Ji-ui}T1YJ7Jw4yA!(6l`>$TAT~^|L6oy4ftQggI6jD_Y`<1DV*qH4M)h z0{l^d@lGEe#C!GLBPtwG#yS~56!xMOo#Jsyhs;A1_gpjJ%grFqG-nR=iNI%b2$PGC zO;R!ya4o<^wPO0MYaHDFD)5K^{?qni9Mv~3Y;yp{cp?qf{Y#7Zf^9Ao{WD8*=UDIa z{(HTjY=q}oYvChkrbpO35a7=Jr%>p;0ym|7;Hf8?>q#_ot)w8nH*xBcwaxWo8mAfG zN67eXg4Yw~S4J1Naf?xq#)lI;%V=Vrbk;JX#4cST6JICHUyNEhr+3DX!*Qs6YoPUF zMY~?_t)eF>gRq{2z5owZ9OIw%RPZDE7=OnA9)d+P4lcWbDq*ua zz4cP9QIB87RJgevHrDZURFApK)GDtB)f?G`8SetO9b*n_Jnc>Bf573#zqCK>Ih@}4 zF8f;d$vFx8%B9uiV`DepN`s^{Kva^cGALapvW>EkQmSWj3j_C9T_v{jrF^AiNLfmi zq%8~x4&Y3ZX-h~o?+xX1cRybJ03+Hiw<`s+^GU0(yp0cvy9Y9V#}H@654_&LsXc1_ E4^I@U)Bpeg diff --git a/index.html b/index.html index d7d9c35..f4be667 100644 --- a/index.html +++ b/index.html @@ -11,9 +11,7 @@ -
-
Loading...
-
+
diff --git a/preload.js b/preload.js index 39af03e..c36b0f5 100644 --- a/preload.js +++ b/preload.js @@ -47,16 +47,24 @@ tasklist = () => { var tasklist = []; if (isWin) { - exec('net session > NULL && echo 1 || echo 0', (err, stdout, stderr) => { - let isAdmin = parseInt(stdout), - IncludeUserName = isAdmin ? '-IncludeUserName' : '', - UserName = isAdmin ? ',UserName' : ''; - powershell(`Get-Process ${IncludeUserName} | sort-object ws -descending | Select-Object ProcessName,Path,Description,WorkingSet${UserName} | ConvertTo-Json`, (stdout, stderr) => { - stderr && console.log(stderr); - tasklist = JSON.parse(stdout); - reslove(tasklist); + execFile(GetBinPath('ProcessKiller.exe'), ['getProcess'], { encoding: 'buffer' },(err, stdout, stderr) => { + err && reject(iconv.decode(stderr, 'gb18030')); + data = JSON.parse(iconv.decode(stdout, 'gb18030')); + data = data.sort((x,y) => { + return y.WorkingSet - x.WorkingSet; }); + reslove(data); }) + // exec('net session > NULL && echo 1 || echo 0', (err, stdout, stderr) => { + // let isAdmin = parseInt(stdout), + // IncludeUserName = isAdmin ? '-IncludeUserName' : '', + // UserName = isAdmin ? ',UserName' : ''; + // powershell(`Get-Process ${IncludeUserName} | sort-object ws -descending | Select-Object ProcessName,Path,Description,WorkingSet${UserName} | ConvertTo-Json`, (stdout, stderr) => { + // stderr && console.log(stderr); + // tasklist = JSON.parse(stdout); + // reslove(tasklist); + // }); + // }) } else { exec('ps -A -o pid -o %cpu -o %mem -o user -o comm | sed 1d | sort -rnk 3', (err, stdout, stderr) => { lines = stdout.split('\n'); @@ -97,7 +105,7 @@ taskkill = (task, path, callback) => { } } -findSecondIndex = (str, cha) => { +findThirdIndex = (str, cha) => { var x = str.indexOf(cha); var y = str.indexOf(cha, x + 1); var z = str.indexOf(cha, y + 1); @@ -109,10 +117,10 @@ icns2Base64 = icns => { buffer = fs.readFileSync(icns, Buffer) ImgHead = Buffer.from([0x89, 0x50, 0x4E, 0x47]) ImgTail = Buffer.from([0x49, 0x45, 0x4E, 0x44, 0xAE, 0x42, 0x60, 0x82]) - var start = findSecondIndex(buffer, ImgHead); + var start = findThirdIndex(buffer, ImgHead); // var WidthPos = start + 18; // var ImgWidth = buffer.readInt16BE(WidthPos); - var end = findSecondIndex(buffer, ImgTail) + 8; + var end = findThirdIndex(buffer, ImgTail) + 8; var b64 = buffer.slice(start, end).toString('base64') return b64 } @@ -144,4 +152,19 @@ GetIcons = PathList => }) reslove(data) } - }) \ No newline at end of file + }) + +// var initTime = new Date().getTime(); +// powershell(`Get-Process | sort-object ws -descending | Select-Object ProcessName,Path,Description,WorkingSet | ConvertTo-Json`, (stdout, stderr) => { +// stderr && console.log(stderr); +// tasklist = JSON.parse(stdout); +// console.log(tasklist); +// var EndTime = new Date().getTime(); +// console.log(EndTime - initTime); +// }) + +// execFile(path.join('bin', 'ProcessKiller.exe'), ['getProcess'], (err, stdout, stderr) => { +// console.log(JSON.parse(stdout)); +// var EndTime = new Date().getTime(); +// console.log(EndTime - initTime); +// }) \ No newline at end of file