变态重口极致另类在线-波多久久夜色精品国产-波多野结衣在线观看一区-波多野结衣在线观看一区二区-污污的网站免费阅读-污污视频网址

當前位置: 首頁編程開發(fā)js(Javascript)/JQ → 用Javascript實現(xiàn)Windows任務(wù)管理器

用Javascript實現(xiàn)Windows任務(wù)管理器

更多

  在Windows系統(tǒng)上,自從98系統(tǒng)以來就提供了腳本宿主(Windows Scripting Host 簡稱WSH)的功能,WSH可以加載并運行JS和VBS腳本,并支持調(diào)用系統(tǒng)的COM組件,在COM組件的支持下腳本可以輕松實現(xiàn)非常強大的功能。

  很多人一提到JS可能就會想到網(wǎng)頁,其實JS同樣可以擁有主動權(quán),做一些其他語言能做到的事情,甚至可以反過來去主宰瀏覽器,而不是被瀏覽器主宰著。

  這篇文章將介紹一個建立在WSH平臺上,通過JS實現(xiàn)的真正可用的Windows任務(wù)管理器。

  一:代碼及注釋

  /*

  JS任務(wù)管理器

  By:X!ao_f

  Mail:Xiao_f.mail@163.com

  QQ:120000512

  */

  //建立對象Shell對象,該對象提供了彈出提示框、運行進程、操作注冊表等基本功能。

  var shell = WScript.CreateObject("WScript.Shell");

  //建立WMI對象,通過WMI可以實現(xiàn)系統(tǒng)管理,其中就包括了進程管理部分

  var wmi = WScript.CreateObject("WbemScripting.SWbemLocator").ConnectServer(".", "root\\cimv2");

  //建立一個IE窗口,用于數(shù)據(jù)的輸出

  var browser = WScript.CreateObject("InternetExplorer.Application");

  //微軟的公共對話框組件,可以提供打開文件、選擇字體、顏色選擇功能

  var commonDialog = WScript.CreateObject("MSComDlg.CommonDialog");

  var window;

  function foreach(object, fn){

   var i = 0;

   for(var e = new Enumerator(object);!e.atEnd();e.moveNext()){

   fn(i++, e.item());

   }

  }

  //初始化窗口

  ~function(){

   browser.navigate("about:blank");

   browser.visible=false

   browser.document.write('\

   \

   \

   \

   \

   \

   ');

   //等待瀏覽器加載完畢

   while(browser.Busy) WScript.Sleep(100);

   //設(shè)置瀏覽器外觀

   browser.document.title = "進程管理器"

   browser.toolBar = false;

   browser.statusBar = false;

   browser.fullScreen = true;

   var w = browser.width;

   var h = browser.height;

   browser.fullScreen = false;

   browser.width = w;

   browser.height = h;

   browser.left = 0;

   browser.top = 0;

   window = browser.document.parentWindow;

   //創(chuàng)建按鈕并綁定事件

   var button = browser.document.createElement("button");

   button.innerHTML = "新建進程..";

   button.onmousedown = open;

   browser.document.body.appendChild(button);

   var button = browser.document.createElement("button");

   button.innerHTML = "刷新列表";

   button.onmousedown = refresh;

   browser.document.body.appendChild(button);

  

   var divList = browser.document.createElement("div");

   divList.id = "divList";

   browser.document.body.appendChild(divList);

  

   //結(jié)束進程的回調(diào)函數(shù)

   browser.document.__kill__ = function(pid){

   var process = wmi.ExecQuery("Select * From Win32_Process Where ProcessID = '"+pid+"'")

   foreach(process, function(i, o){

   o.terminate();

   });

   };

   browser.visible = true

  }()

  //更新列表

  function update(msg){

   browser.document.body.all.divList.innerHTML = msg;

  }

  //新建進程

  function open(){

   //因為第一次彈出對話框會被瀏覽器窗口擋住,隱藏一下瀏覽器可以解決這個問題

   if(!commonDialog.Filter){

   browser.visible=false

   browser.visible=true

   }

   //這里設(shè)置打開對話框的過濾規(guī)則

   commonDialog.Filter = "所有類型 (*.*)";

   commonDialog.DialogTitle = "進程管理器-選擇文件";

   commonDialog.MaxFileSize = 260;

   commonDialog.CancelError = false;

   //通過延遲的方式打開對話框可以保證顯示在最前端

   window.setTimeout(function(){

   commonDialog.ShowOpen();

   var path = commonDialog.Filename;

   //Path不為空可以視為按的確定按鈕,用shell執(zhí)行該路徑

   if(path){

   shell.run('"' + path + '"');

   commonDialog.Filename = '';

   listProcess();

   }

   },10);

  }

  //刷新

  function refresh(){

   listProcess();

  }

  //處理進程列表的主要函數(shù)

  function listProcess(){

   //這里先通過WMI查詢出所有的進程基本信息,有關(guān)WMI的使用方法可以查詢相關(guān)資料,或通過cmd下wmic -?查看幫助信息,在這里不過多介紹。

   var process = wmi.ExecQuery("Select * from Win32_Process");

   var p1 = {};

   var p2 = {};

   //下面計算CPU占用率,引用:http://www.techish.net/2009/03/get-process-cpu-usage-using-wmi/

   var data1 = wmi.ExecQuery("select * from Win32_PerfRawData_PerfProc_Process");

   foreach(data1, function(i, object){

   p1[object.IDProcess] = object;

   });

   WScript.sleep(1000)

   var data2 = wmi.ExecQuery("select * from Win32_PerfRawData_PerfProc_Process");

   foreach(data2, function(i, object){

   p2[object.IDProcess] =

   (p1[object.IDProcess].PercentProcessorTime - object.PercentProcessorTime)/

   (p1[object.IDProcess].TimeStamp_Sys100NS - object.TimeStamp_Sys100NS) * 100;

   });

   //生成表格并更新

   var table = [];

   var memSum = 0;

   var cpuSum = 0;

   table.push(''+['序號','PID','名稱','操作','CPU占用率','內(nèi)存占用','路徑'].join('')+'');

   foreach(process, function(i, object){

   var tr = [];

   var td = [];

   td.push(i);

   td.push(object.processid);

   td.push(object.name);

   td.push('結(jié)束');

   td.push((~~(p2[object.ProcessID]*100))/100);

   td.push((~~((object.WorkingSetSize/1024/1024)*100))/100+'MB');

   td.push((object.executablepath||'-')+' ');

   memSum+=(object.WorkingSetSize/1024/1024);

   if(object.processid!=0){

   cpuSum+=p2[object.ProcessID];

   }

   tr.push(''+td.join('')+'');

   table.push(tr);

   });

   table.push('內(nèi)存占用:'+((~~(memSum*100))/100)+'MB'+',CPU占用率:'+((~~(cpuSum*100))/100)+'%');

   table=''

   update(table);

  }

  //這里要有一個循環(huán),因為WScript進程與瀏覽器進程是分開的,如果不加循環(huán)當程序執(zhí)行到這里WScript就結(jié)束了。

  try{

   while(!browser.Closed) { try{refresh();}catch(e){}; WScript.Sleep(1000) };

  }catch(e){}

熱門評論
最新評論
發(fā)表評論 查看所有評論(0)
昵稱:
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
字數(shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)
主站蜘蛛池模板: 涩涩网站在线看 | 日韩欧美一区二区三区中文精品 | 在线观看黄a大片爽爽影院免费 | 亚洲国产精品久久久久久网站 | 99免费精品 | 九九热视频在线播放 | 欧美色图另类图片 | 国产v亚洲v天堂a无 国产v亚洲v天堂无码 | 精品国语国产在线对白 | 日本三级带日本三级带黄首页 | 草草影院www色欧美极品 | a一级毛片 | 午夜爽爽性刺激一区二区视频 | 亚洲日韩中文字幕一区 | 国产精品日韩专区 | 狠狠综合久久综合88亚洲日本 | 国产成人在线视频免费观看 | 亚洲图片在线视频 | 成人免费一区二区三区 | 欧美大陆日韩一区二区三区 | 国内自拍欧美 | 一级a毛片免费观看久久精品 | 国产男女猛烈无遮挡 | 中文字幕免费播放 | 成人三级图片 | 国产成人精品在线观看 | a一级毛片免费播放 | 国产人人艹 | 中文字幕在线精品视频入口一区 | 三级黄色短视频 | 国产高清在线免费视频 | 亚洲无矿砖码专区2020 | h无遮挡成人漫画网站 | 欧美日韩国产一区 | 久久午夜网 | a级毛片毛片免费观看永久 a级毛片黄色 | 又黄又爽的成人免费视频播放 | 久久伊人婷婷 | 亚洲欧美日韩国产 | 免费看一片 | 色综合天天综合网国产人 |