日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
JavaScript實(shí)現(xiàn)真正可用的任務(wù)管理器

在Windows系統(tǒng)上,自從98系統(tǒng)以來就提供了腳本宿主(Windows Scripting Host 簡(jiǎn)稱WSH)的功能,WSH可以加載并運(yùn)行JS和VBS腳本,并支持調(diào)用系統(tǒng)的COM組件,在COM組件的支持下腳本可以輕松實(shí)現(xiàn)非常強(qiáng)大的功能。 很多人一提到JS可能就會(huì)想到網(wǎng)頁,其實(shí)JS同樣可以擁有主動(dòng)權(quán),做一些其他語言能做到的事情,甚至可以反過來去主宰瀏覽器,而不是被瀏覽器主宰著。 這篇文章將介紹一個(gè)建立在WSH平臺(tái)上,通過JS實(shí)現(xiàn)的真正可用的Windows任務(wù)管理器。   
一:代碼及注釋   

專注于為中小企業(yè)提供做網(wǎng)站、成都網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)太康免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了千余家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

 
 
 
 
  1. /*  
  2. JS任務(wù)管理器  
  3. By:X!ao_f  
  4. Mail:Xiao_f.mail@163.com  
  5. QQ:120000512  
  6. */ 
  7. //建立對(duì)象Shell對(duì)象,該對(duì)象提供了彈出提示框、運(yùn)行進(jìn)程、操作注冊(cè)表等基本功能。  
  8. var shell = WScript.CreateObject("WScript.Shell");  
  9. //建立WMI對(duì)象,通過WMI可以實(shí)現(xiàn)系統(tǒng)管理,其中就包括了進(jìn)程管理部分  
  10. var wmi = WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\\cimv2");  
  11. //建立一個(gè)IE窗口,用于數(shù)據(jù)的輸出  
  12. var browser = WScript.CreateObject("InternetExplorer.Application");  
  13. //微軟的公共對(duì)話框組件,可以提供打開文件、選擇字體、顏色選擇功能  
  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.     \  
  30.       \  
  31.         \  
  32.       \  
  33.       \  
  34.    ');  
  35.   //等待瀏覽器加載完畢  
  36.     while(browser.Busy) WScript.Sleep(100);  
  37.     //設(shè)置瀏覽器外觀  
  38.     browser.document.title = "進(jìn)程管理器" 
  39.     browser.toolBar = false;  
  40.     browser.statusBar = false;  
  41.     browser.fullScreen = true;  
  42.     var w = browser.width;  
  43.     var h = browser.height;  
  44.     browser.fullScreen = false;  
  45.     try{  
  46.     browser.width = w;  
  47.     browser.height = h;  
  48.     browser.left = 0;  
  49.     browser.top = 0;  
  50.     }catch(e){}  
  51.     window = browser.document.parentWindow;  
  52.   //創(chuàng)建按鈕并綁定事件  
  53.     var button = browser.document.createElement("button");  
  54.     button.innerHTML = "新建進(jìn)程..";  
  55.     button.onmousedown = open;  
  56.     browser.document.body.appendChild(button);  
  57.  
  58.     var button = browser.document.createElement("button");  
  59.     button.innerHTML = "刷新列表";  
  60.     button.onmousedown = refresh;  
  61.     browser.document.body.appendChild(button);  
  62.       
  63.     var divList = browser.document.createElement("div");  
  64.     divList.id = "divList";  
  65.     browser.document.body.appendChild(divList);  
  66.       
  67.     //結(jié)束進(jìn)程的回調(diào)函數(shù)  
  68.     browser.document.__kill__ = function(pid){  
  69.         var process = wmi.ExecQuery("Select * From Win32_Process Where ProcessID = '"+pid+"'")  
  70.         foreach(process, function(i, o){  
  71.             o.terminate();  
  72.         });  
  73.     };  
  74.     browser.visible = true 
  75. }()  
  76.  
  77. //更新列表  
  78. function update(msg){  
  79.   browser.document.body.all.divList.innerHTML = msg;  
  80. }  
  81.  
  82. //新建進(jìn)程  
  83. function open(){  
  84.   //因?yàn)榈谝淮螐棾鰧?duì)話框會(huì)被瀏覽器窗口擋住,隱藏一下瀏覽器可以解決這個(gè)問題  
  85.   if(!commonDialog.Filter){  
  86.     browser.visible=false 
  87.     browser.visible=true 
  88.   }  
  89.   //這里設(shè)置打開對(duì)話框的過濾規(guī)則  
  90.   commonDialog.Filter = "所有類型 (*.*)";  
  91.   commonDialog.DialogTitle = "進(jìn)程管理器-選擇文件";  
  92.   commonDialog.MaxFileSize = 260;  
  93.   commonDialog.CancelError = false;  
  94.   //通過延遲的方式打開對(duì)話框可以保證顯示在最前端  
  95.   window.setTimeout(function(){  
  96.     commonDialog.ShowOpen();  
  97.     var path = commonDialog.Filename;  
  98.     //Path不為空可以視為按的確定按鈕,用shell執(zhí)行該路徑  
  99.     if(path){  
  100.       shell.run('"' + path + '"');  
  101.       commonDialog.Filename = '';  
  102.       listProcess();  
  103.     }  
  104.   },10);  
  105. }  
  106.  
  107. //刷新  
  108. function refresh(){  
  109.   listProcess();  
  110. }  
  111.  
  112. //處理進(jìn)程列表的主要函數(shù)  
  113. function listProcess(){  
  114.   //這里先通過WMI查詢出所有的進(jìn)程基本信息,有關(guān)WMI的使用方法可以查詢相關(guān)資料,或通過cmd下wmic -?查看幫助信息,在這里不過多介紹。  
  115.     var process = wmi.ExecQuery("Select * from Win32_Process");  
  116.     var p1 = {};  
  117.     var p2 = {};  
  118.     //下面計(jì)算CPU占用率,引用:http://www.techish.net/2009/03/get-process-cpu-usage-using-wmi/  
  119.     var data1 = wmi.ExecQuery("select * from Win32_PerfRawData_PerfProc_Process");  
  120.     foreach(data1, function(i, object){  
  121.     p1[object.IDProcess] = object;  
  122.     });  
  123.     WScript.sleep(1000)  
  124.     var data2 = wmi.ExecQuery("select * from Win32_PerfRawData_PerfProc_Process");  
  125.     foreach(data2, function(i, object){  
  126.     p2[object.IDProcess] =    
  127.       (p1[object.IDProcess].PercentProcessorTime - object.PercentProcessorTime)/  
  128.       (p1[object.IDProcess].TimeStamp_Sys100NS - object.TimeStamp_Sys100NS) * 100;  
  129.     });  
  130.     //生成表格并更新  
  131.     var table = [];  
  132.     var memSum = 0;  
  133.     var cpuSum = 0;  
  134.     table.push(''+['序號(hào)','PID','名稱','操作','CPU占用率','內(nèi)存占用','路徑'].join('')+'');  
  135.     foreach(process, function(i, object){  
  136.         var tr = [];  
  137.         var td = [];  
  138.         td.push(i);  
  139.         td.push(object.processid);  
  140.         td.push(object.name);  
  141.         td.push('結(jié)束');  
  142.         td.push((~~(p2[object.ProcessID]*100))/100);  
  143.         td.push((~~((object.WorkingSetSize/1024/1024)*100))/100+'MB');  
  144.         td.push((object.executablepath||'-')+' ');  
  145.         memSum+=(object.WorkingSetSize/1024/1024);  
  146.         if(object.processid!=0){  
  147.       cpuSum+=p2[object.ProcessID];  
  148.         }  
  149.         tr.push(''+td.join('')+'');  
  150.         table.push(tr);  
  151.     });  
  152.     table.push('內(nèi)存占用:'+((~~(memSum*100))/100)+'MB'+',CPU占用率:'+((~~(cpuSum*100))/100)+'%');  
  153.     table=''+table.join('')+'' 
  154.     update(table);  
  155. }  
  156.  
  157. //這里要有一個(gè)循環(huán),因?yàn)閃Script進(jìn)程與瀏覽器進(jìn)程是分開的,如果不加循環(huán)當(dāng)程序執(zhí)行到這里WScript就結(jié)束了。  
  158. try{  
  159.     while(!browser.Closed) { try{refresh();}catch(e){}; WScript.Sleep(1000) };  
  160. }catch(e){}  

運(yùn)行效果:

二.源碼下載

/Files/xiao-f/Process.zip

運(yùn)行方法:前提是windows操作系統(tǒng),如果.js的打開方式?jīng)]有特殊設(shè)置過,雙擊就可以運(yùn)行了,如果關(guān)聯(lián)過IDE,需要選擇打開方式為"Microsoft Windows Based Script Host";

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


文章標(biāo)題:JavaScript實(shí)現(xiàn)真正可用的任務(wù)管理器
網(wǎng)頁路徑:http://www.dlmjj.cn/article/dpgcces.html