很多人一提到JS可能就会想到网页,其实JS同样可以拥有主动权,做一些其他语言能做到的事情,甚至可以反过来去主宰浏览器,而不是被浏览器主宰着。

这篇文章将介绍一个建立在WSH平台上,通过JS实现的真正可用的Windows任务管理器。

一:代码及注释

/*

JS任务管理器

By:X!ao_f

Mail:Xiao_f.mail@163.com

QQ:120000512

*/

//建立对象Shell对象,该对象提供了弹出提示框、运行进程、操作注册表等基本功能。

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

//建立WMI对象,通过WMI可以实现系统管理,其中就包括了进程管理部分

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

//建立一个IE窗口,用于数据的输出

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('\

\

*{font:14px arial;margin:0;padding:3px;}\

\

\

');

//等待浏览器加载完毕

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

//设置浏览器外观

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;

//创建按钮并绑定事件

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);

//结束进程的回调函数

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

}

//这里设置打开对话框的过滤规则

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

commonDialog.DialogTitle = "进程管理器-选择文件";

commonDialog.MaxFileSize = 260;

commonDialog.CancelError = false;

//通过延迟的方式打开对话框可以保证显示在最前端

window.setTimeout(function(){

commonDialog.ShowOpen();

var path = commonDialog.Filename;

//Path不为空可以视为按的确定按钮,用shell执行该路径

if(path){

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

commonDialog.Filename = '';

listProcess();

}

},10);

}

//刷新

function refresh(){

listProcess();

}

//处理进程列表的主要函数

function listProcess(){

//这里先通过WMI查询出所有的进程基本信息,有关WMI的使用方法可以查询相关资料,或通过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占用率','内存占用','路径'].join('')+'');

foreach(process, function(i, object){

var tr = [];

var td = [];

td.push(i);

td.push(object.processid);

td.push(object.name);

td.push('结束');

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

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

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

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

if(object.processid!=0){

cpuSum+=p2[object.ProcessID];

}

tr.push('

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

table.push(tr);

});

table.push('

内存占用:'+((~~(memSum*100))/100)+'MB'+',CPU占用率:'+((~~(cpuSum*100))/100)+'%');

table='

'

update(table);

}

//这里要有一个循环,因为WScript进程与浏览器进程是分开的,如果不加循环当程序执行到这里WScript就结束了。

try{

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

}catch(e){}

运行效果:

二.源码下载

Process.rar

运行方法:前提是windows操作系统,如果.js的打开方式没有特殊设置过,双击就可以运行了,如果关联过IDE,需要选择打开方式为"Microsoft Windows Based Script Host";

html简单的任务管理系统实现,用Javascript实现Windows任务管理器的代码相关推荐

  1. Java 简单的用户管理系统(代码注释超全超详细!!!)

    1.简介 本项目是个java开发的简单的用户管理系统,因为能力有限,我做的界面丑陋了些,大家见谅 实现的功能:登录.添加用户.修改用户(修改的时候用户原始数据显示到界面上.单个删除用户和多个删除用户. ...

  2. 用ASP.NET实现简单的超市管理系统-登录页面

    一.  任务描述 1.     使用Asp.NET技术,完成超市商品管理系统 2.     开发工具:VS2010 3.     数据库:SQL Server 2008 4.     功能模块:登录. ...

  3. php+mysql实现简单的图书管理系统(简单的数据库操作)

    php+mysql实现简单的图书管理系统 ps:前端页面设计得有点丑,将就着用,哈哈哈.不具备用户和管理员功能,如要实现只需将首页的功能根据数据库中账号信息选择性使用就可以了.数据库关系设计什么的完全 ...

  4. 基于Java的简单零食商城管理系统

    标题# 基于Java的简单零食商城管理系统 专业团队开发,接受定制 联系VX:Alfalfa-cx 专属源码网站欢迎浏览:http://www.eqicode.com/Code/Index.html ...

  5. jsp mysql简单仓库信息管理系统_基于jsp+mysql的JSP简单学生信息管理系统

    运行环境: 最好是java jdk 1.8,我们在这个平台上运行的.其他版本理论上也可以. IDE环境: Eclipse,Myeclipse,IDEA都可以 tomcat环境: Tomcat 7.x, ...

  6. python小项目实例流程-Python小项目:快速开发出一个简单的学生管理系统

    原标题:Python小项目:快速开发出一个简单的学生管理系统 本文根据实际项目中的一部分api 设计抽象出来,实例化成一个简单小例子,暂且叫作「学生管理系统」. 这个系统主要完成下面增删改查的功能: ...

  7. python小项目案例-Python小项目:快速开发出一个简单的学生管理系统

    本文根据实际项目中的一部分api 设计抽象出来,实例化成一个简单小例子,暂且叫作「学生管理系统」. 这个系统主要完成下面增删改查的功能: 包括: 学校信息的管理 教师信息的管理 学生信息的管理 根据A ...

  8. AMD规范:简单而优雅的动态载入JavaScript代码

    本文翻译自http://www.sitepen.com/blog/2010/11/04/requirejsamd-module-forms/,并加入部分自己的解释. CommonJS 提出了一种用于同 ...

  9. 最简单的彩灯管理系统

    最简单的彩灯管理系统 一.用Proteus软件来绘制电路图 二.用Keil软件来写程序 三.将Keil写的代码,放进Proteus的仿真图中 实验题目: 将P2端口连接LED发光二极管,连接的高4个与 ...

最新文章

  1. 课堂经验值管理小程序_柳州人事管理小程序要有这些功能
  2. jQuery控制表格垂直滚动条
  3. 使用squid在阿里云服务器(centos7)上搭建自己的代理服务器
  4. 用java实现验证码(CAPTCHA)
  5. vue计算多列和_解决vue 表格table列求和的问题
  6. 美团Android开发工程师岗位职能要求,真香
  7. [C#][原创]Magick.NET使用时一些弱点简介
  8. NOIP2016排名(919~1419)
  9. 理解Aode Air,理解RIA开发
  10. 除了PS,这几款设计软件也是我的最爱
  11. Pandas学习-练习题
  12. 聊聊技术人的“绩效考核”
  13. 已购买阿里云CDN流量包仍旧扣费的原因及解决方法
  14. 计算机为什么找不到c盘d盘,我的电脑c盘d盘都没有了?为什么
  15. 软件系统设计-17-架构评估
  16. Kafka——Sender 线程分析
  17. 如何用柔和的方法提高QQ浏览器打开网页的速度
  18. 总包 50W,4 轮拿下阿里 Offer !(真题分享)
  19. 办公室计算机知识考试试题,wordexcel基本常识50题考试
  20. [Design]平面设计教程-《大师之路》

热门文章

  1. python贝叶斯算法的论文_3个范例带你读懂贝叶斯法则
  2. 爱穿白衣服的留下,好用
  3. linux查看web密码,fuel7.0 openstack webui 默认密码查看
  4. CET4翻译之“无主句”
  5. 唱吧android逆向加密算法笔记 此文章已做脱敏处理不会对原厂家app安全构成威胁,仅供学习
  6. Kotlin:所有的一切还是从Hello Kotlin开始
  7. C++如何开发验证码短信接口API
  8. MicroByte蓝牙手柄初探
  9. html中padding在ie8兼容性,怎么解决bootstrap在各版本IE浏览器中的兼容性问题?
  10. 科学道德与学风-2021雨课堂答案-第9章