많은 사람들이 JS를 언급하면 웹페이지를 떠올릴 수도 있습니다. 사실 JS는 주도권을 갖고 다른 언어가 할 수 있는 일을 할 수도 있습니다. 심지어 브라우저에 지배당하는 것이 아니라 브라우저를 지배할 수도 있습니다.
이 기사에서는 WSH 플랫폼을 기반으로 구축되고 JS를 통해 구현되어 실제로 사용 가능한 Windows 작업 관리자를 소개합니다.
1: 코드 및 설명
/*
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" ; >
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)
//브라우저 모양 설정
browser.document.title = "프로세스 관리자"
browser.toolBar = false;
browser.statusBar = false;
browser.fullScreen = true;
var w = browser.width;
browser. fullScreen = false;
browser.width = h;
browser.left = 0;
window = browser.document.parentWindow ;
//버튼 생성 및 이벤트 바인딩
var 버튼 = browser.document.createElement("button")
button.innerHTML = "새 프로세스.."
button.onmousedown = open;
browser.document.body.appendChild(button);
var 버튼 = browser.document.createElement("button");
button.innerHTML = "목록 새로 고침"; >button.onmousedown = 새로고침;
browser.document.body.appendChild(button);
var divList = browser.document.createElement("div")
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
}()
//업데이트 목록
함수 업데이트(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 =
false;
/ / 지연된 방식으로 대화 상자를 열면 대화 상자가 프런트 엔드에 표시되도록 할 수 있습니다.
window.setTimeout(function(){
commonDialog.ShowOpen();
var path = commonDialog .Filename
//Path 비어 있지 않으면 확인 버튼을 누른 것으로 간주하고 쉘을 이용하여
if(path){
shell.run('" ' 경로 ''');
commonDialog.Filename = '';
listProcess();
},10)
//새로 고침
functionrefresh(){
listProcess();
}
//프로세스 목록 처리를 위한 주요 함수
function listProcess(){
//먼저 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 cpuSum = 0;
table.push('
' ['일련번호','PID','이름','작업','CPU 사용량','메모리 사용량',' Path'].join(' | ') ' |
')
foreach(process, function(i, object){
var tr = [];
var td = [];
td.push(object.processid)
>td.push('
End< ; /span>')
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(' < ;tr>메모리 사용량:' ((~~(memSum*100))/100) 'MB' ',CPU 사용량:' ((~~(cpuSum*100))/100 ) ' % |
');
table='<테이블 너비=100% border=1>' table.join('') '
업데이트 (table);
}
//WScript 프로세스는 브라우저 프로세스와 별개이므로 여기에 루프가 있어야 합니다. 루프가 없으면 여기서 프로그램이 실행될 때 WScript가 종료됩니다.
try{
while(!browser.Closed) { try{refresh();}catch(e){} WScript.Sleep(1000) }
}catch(e){}
운영효과:
2. 소스 코드 다운로드
Process.rar
실행 방법: Windows 운영체제를 전제로 .js의 열기 방법이 특별히 지정되지 않은 경우. IDE와 연결되어 있는 경우에는 "Microsoft Windows 기반 스크립트 호스트"를 선택해야 합니다.