成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

JavaScript實現真正可用的任務管理器

開發 前端
JS可以擁有主動權,做一些其他語言能做的事情,甚至可以反過來去主宰瀏覽器,下面看看如何通過JS實現的真正可用的Windows任務管理器。
在Windows系統上,自從98系統以來就提供了腳本宿主(Windows Scripting Host 簡稱WSH)的功能,WSH可以加載并運行JS和VBS腳本,并支持調用系統的COM組件,在COM組件的支持下腳本可以輕松實現非常強大的功能。
很多人一提到JS可能就會想到網頁,其實JS同樣可以擁有主動權,做一些其他語言能做到的事情,甚至可以反過來去主宰瀏覽器,而不是被瀏覽器主宰著。
這篇文章將介紹一個建立在WSH平臺上,通過JS實現的真正可用的Windows任務管理器。 
 
一:代碼及注釋 
 
  1. /*  
  2. JS任務管理器  
  3. By:X!ao_f  
  4. Mail:Xiao_f.mail@163.com  
  5. QQ:120000512  
  6. */ 
  7. //建立對象Shell對象,該對象提供了彈出提示框、運行進程、操作注冊表等基本功能。  
  8. var shell = WScript.CreateObject("WScript.Shell");  
  9. //建立WMI對象,通過WMI可以實現系統管理,其中就包括了進程管理部分  
  10. var wmi = WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".""root\\cimv2");  
  11. //建立一個IE窗口,用于數據的輸出  
  12. var browser = WScript.CreateObject("InternetExplorer.Application");  
  13. //微軟的公共對話框組件,可以提供打開文件、選擇字體、顏色選擇功能  
  14. var commonDialog = WScript.CreateObject("MSComDlg.CommonDialog");  
  15. var window;  
  16.  
  17. function foreach(object, fn){  
  18.     var i = 0;  
  19.     for(var e = new Enumerator(object);!e.atEnd();e.moveNext()){  
  20.         fn(i++, e.item());  
  21.     }  
  22. }  
  23.  
  24. //初始化窗口  
  25. ~function(){  
  26.   browser.navigate("about:blank");  
  27.     browser.visible=false 
  28.     browser.document.write('\  
  29.     <HTML>\  
  30.       <head>\  
  31.         <style>\  
  32.           *{font:14px arial;margin:0;padding:3px;}\  
  33.         </style>\  
  34.       </head>\  
  35.       <BODY></BODY>\  
  36.    </HTML>');  
  37.   //等待瀏覽器加載完畢  
  38.     while(browser.Busy) WScript.Sleep(100);  
  39.     //設置瀏覽器外觀  
  40.     browser.document.title = "進程管理器" 
  41.     browser.toolBar = false;  
  42.     browser.statusBar = false;  
  43.     browser.fullScreen = true;  
  44.     var w = browser.width;  
  45.     var h = browser.height;  
  46.     browser.fullScreen = false;  
  47.     try{  
  48.     browser.width = w;  
  49.     browser.height = h;  
  50.     browser.left = 0;  
  51.     browser.top = 0;  
  52.     }catch(e){}  
  53.     window = browser.document.parentWindow;  
  54.   //創建按鈕并綁定事件  
  55.     var button = browser.document.createElement("button");  
  56.     button.innerHTML = "新建進程..";  
  57.     button.onmousedown = open;  
  58.     browser.document.body.appendChild(button);  
  59.  
  60.     var button = browser.document.createElement("button");  
  61.     button.innerHTML = "刷新列表";  
  62.     button.onmousedown = refresh;  
  63.     browser.document.body.appendChild(button);  
  64.       
  65.     var divList = browser.document.createElement("div");  
  66.     divList.id = "divList";  
  67.     browser.document.body.appendChild(divList);  
  68.       
  69.     //結束進程的回調函數  
  70.     browser.document.__kill__ = function(pid){  
  71.         var process = wmi.ExecQuery("Select * From Win32_Process Where ProcessID = '"+pid+"'")  
  72.         foreach(process, function(i, o){  
  73.             o.terminate();  
  74.         });  
  75.     };  
  76.     browser.visible = true 
  77. }()  
  78.  
  79. //更新列表  
  80. function update(msg){  
  81.   browser.document.body.all.divList.innerHTML = msg;  
  82. }  
  83.  
  84. //新建進程  
  85. function open(){  
  86.   //因為第一次彈出對話框會被瀏覽器窗口擋住,隱藏一下瀏覽器可以解決這個問題  
  87.   if(!commonDialog.Filter){  
  88.     browser.visible=false 
  89.     browser.visible=true 
  90.   }  
  91.   //這里設置打開對話框的過濾規則  
  92.   commonDialog.Filter = "所有類型 (*.*)";  
  93.   commonDialog.DialogTitle = "進程管理器-選擇文件";  
  94.   commonDialog.MaxFileSize = 260;  
  95.   commonDialog.CancelError = false;  
  96.   //通過延遲的方式打開對話框可以保證顯示在最前端  
  97.   window.setTimeout(function(){  
  98.     commonDialog.ShowOpen();  
  99.     var path = commonDialog.Filename;  
  100.     //Path不為空可以視為按的確定按鈕,用shell執行該路徑  
  101.     if(path){  
  102.       shell.run('"' + path + '"');  
  103.       commonDialog.Filename = '';  
  104.       listProcess();  
  105.     }  
  106.   },10);  
  107. }  
  108.  
  109. //刷新  
  110. function refresh(){  
  111.   listProcess();  
  112. }  
  113.  
  114. //處理進程列表的主要函數  
  115. function listProcess(){  
  116.   //這里先通過WMI查詢出所有的進程基本信息,有關WMI的使用方法可以查詢相關資料,或通過cmd下wmic -?查看幫助信息,在這里不過多介紹。  
  117.     var process = wmi.ExecQuery("Select * from Win32_Process");  
  118.     var p1 = {};  
  119.     var p2 = {};  
  120.     //下面計算CPU占用率,引用:http://www.techish.net/2009/03/get-process-cpu-usage-using-wmi/  
  121.     var data1 = wmi.ExecQuery("select * from Win32_PerfRawData_PerfProc_Process");  
  122.     foreach(data1, function(i, object){  
  123.     p1[object.IDProcess] = object;  
  124.     });  
  125.     WScript.sleep(1000)  
  126.     var data2 = wmi.ExecQuery("select * from Win32_PerfRawData_PerfProc_Process");  
  127.     foreach(data2, function(i, object){  
  128.     p2[object.IDProcess] =    
  129.       (p1[object.IDProcess].PercentProcessorTime - object.PercentProcessorTime)/  
  130.       (p1[object.IDProcess].TimeStamp_Sys100NS - object.TimeStamp_Sys100NS) * 100;  
  131.     });  
  132.     //生成表格并更新  
  133.     var table = [];  
  134.     var memSum = 0;  
  135.     var cpuSum = 0;  
  136.     table.push('<tr><td>'+['序號','PID','名稱','操作','CPU占用率','內存占用','路徑'].join('</td><td>')+'</td></tr>');  
  137.     foreach(process, function(i, object){  
  138.         var tr = [];  
  139.         var td = [];  
  140.         td.push(i);  
  141.         td.push(object.processid);  
  142.         td.push(object.name);  
  143.         td.push('<span style="color:red;cursor:pointer" onclick="document.__kill__('+object.processid+'); this.parentNode.parentNode.removeNode(true);">結束</span>');  
  144.         td.push((~~(p2[object.ProcessID]*100))/100);  
  145.         td.push((~~((object.WorkingSetSize/1024/1024)*100))/100+'MB');  
  146.         td.push((object.executablepath||'-')+'&nbsp');  
  147.         memSum+=(object.WorkingSetSize/1024/1024);  
  148.         if(object.processid!=0){  
  149.       cpuSum+=p2[object.ProcessID];  
  150.         }  
  151.         tr.push('<tr><td>'+td.join('</td><td>')+'</td></tr>');  
  152.         table.push(tr);  
  153.     });  
  154.     table.push('<tr><td colspan=8>內存占用:'+((~~(memSum*100))/100)+'MB'+',CPU占用率:'+((~~(cpuSum*100))/100)+'%</td></tr>');  
  155.     table='<table width=100% border=1>'+table.join('')+'</table>' 
  156.     update(table);  
  157. }  
  158.  
  159. //這里要有一個循環,因為WScript進程與瀏覽器進程是分開的,如果不加循環當程序執行到這里WScript就結束了。  
  160. try{  
  161.     while(!browser.Closed) { try{refresh();}catch(e){}; WScript.Sleep(1000) };  
  162. }catch(e){}  
運行效果:

 

二.源碼下載

/Files/xiao-f/Process.zip

運行方法:前提是windows操作系統,如果.js的打開方式沒有特殊設置過,雙擊就可以運行了,如果關聯過IDE,需要選擇打開方式為"Microsoft Windows Based Script Host";

原文地址:http://www.cnblogs.com/xiao-f/archive/2012/03/24/2415407.html

【編輯推薦】

  1. 16個對開發者非常有用的JavaScript庫
  2. 深入理解JavaScript:設計模式之組合模式
  3. 深入理解JavaScript:設計模式之適配器模式
  4. 分享5個最佳的JavaScript日期處理類庫
  5. JavaScript表格組件加載速度測試

 

責任編輯:張偉 來源: X!ao_f的博客
相關推薦

2020-03-12 18:34:30

Windows 10Windows任務管理器

2020-10-12 09:00:00

Firefox任務管理器瀏覽器

2011-06-30 09:31:54

Chrome OS

2015-08-18 13:25:12

PaaS服務架構動態擴展

2023-11-24 08:21:08

下載任務管理器

2022-04-13 09:43:50

VoltaJavaScript開發工具

2023-03-03 09:09:55

2021-03-05 14:02:51

LinuxWindows管理器

2022-01-21 07:15:19

微軟Windows 11任務管理器

2011-06-06 09:57:43

任務管理器

2009-02-18 20:39:34

2023-11-25 09:31:20

Go事件管理器

2020-08-10 08:26:26

Windows 10Windows微軟

2009-12-23 08:50:27

Fedora任務管理器

2024-11-12 08:03:27

JavaScript管理器安全

2009-06-17 08:41:45

Windows 7微軟操作系統

2023-12-19 22:48:22

2010-12-28 14:53:29

服務器管理器

2015-08-06 11:25:25

iOS9多任務iCarousel

2010-09-10 09:12:49

私有云
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 老司机67194精品线观看 | 亚洲精品1区 | 欧美一区二区在线观看 | 国产视频精品免费 | 成人小视频在线观看 | 一级免费a | 日韩免费一区二区 | 国产成人精品一区二区三 | 美女视频h| 久久久久久久久综合 | 黄网免费看 | 亚洲成人久久久 | 久久久久久久av | 日韩精品免费视频 | 精品一区二区三区电影 | 黄色播放 | 91久久久久久久久久久久久 | 日韩国产免费观看 | 99久久精品一区二区毛片吞精 | 天天操天天干天天曰 | 久久精点视频 | 伊人免费在线 | 日本91av视频 | 高清18麻豆 | 中文字幕av一区二区三区 | 日韩中文一区二区三区 | 国产激情综合五月久久 | 狠狠操狠狠干 | 欧美精品一区二区免费 | 日本在线视 | 亚洲aⅴ精品 | 欧美激情久久久 | 国产综合欧美 | 五十女人一级毛片 | 青青草久久 | 精品欧美一区二区在线观看 | 久久久久国产精品一区二区 | 91一区二区三区 | h片在线观看网站 | 国产日产精品一区二区三区四区 | 国产a视频 |