;; I won't help anyone with this thing!!!
;; use it on your own risk
;; works only under winxp prof and up
;; /task
dialog -l task_manager {
title "Task Manager"
size -1 -1 188 250
option dbu
button "",1,0 0 0 0,ok hide
list 2, 4 4 180 230, size
button "&Kill", 3, 5 236 40 12
button "&Detail", 4, 50 236 40 12
button "&Filter", 5, 95 236 40 12
button "&Refresh List", 6, 140 236 40 12,disable
}
dialog -l task_filter {
title "Filter Settings"
size -1 -1 147 55
option dbu
check "Prozess Name is equal to", 4, 2 5 75 10
combo 5, 80 5 65 60, disable sort dropdown edit
check "PID is equal to", 6, 2 16 75 10
edit "", 7, 80 16 65 10, autohs
check "Username is equal to", 8, 2 27 74 10
edit $regread(HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultUserName), 9, 80 27 65 10, disable autohs
button "&Search", 10, 36 40 37 12, ok default
button "&Cancel", 11, 80 40 37 12, cancel
}
dialog -l task_detail {
title "Details"
size -1 -1 350 160
option dbu
button "", 1, 0 0 0 0,ok hide
edit "", 2, 1 1 348 158, read multi return hsbar vsbar
}
dialog -l task_kill {
title "Kill Process"
size -1 -1 150 72
option dbu
check "Kill all tasks in conjunction with this task", 1, 3 16 143 10
text "PID", 3, 3 5 15 8, right
text "Killing a PID is a bad idea which can cause unexpected errors, system failures and data loss.", 4, 9 51 129 16
box "Warning:", 5, 3 43 144 27
combo 2, 21 4 125 45, edit drop
button "&Kill", 6, 35 28 37 12,ok
button "&Cancel", 7, 75 28 37 12,default cancel
}
on *:dialog:task_kill:init:0:{
mdx_load
mdx SetColor $dname 4,5 text $rgb(255,0,0)
filter -ik task_manager 2 outputkill
if ($did($task,2).sel) { did -c $dname 2 $calc($ifmatch -1) }
if (!$i_admin) {
did -bra $dname 6 No Admin
}
}
on *:dialog:task_kill:sclick:6:{
if ($i_admin) {
comcmd taskkill $iif($did(1).state,/T) /F /PID $$did(2).text
!.timer 1 0 refreshlist
}
}
on *:dialog:task_detail:init:0:{
mdx_load
mdx SetFont $dname 2 System 11 400 Lucida Console
mdx SetColor $dname 2 textbg $rgb(255,255,255)
mdx SetColor $dname 2 background $rgb(255,255,255)
mdx SetColor $dname 2 text $rgb(0,0,0)
tokenize 9 %output
tokenize 32 $2
if ($5 isnum) {
write -c task.txt
write -c task1.txt
write -c task2.txt
write -c task3.txt
comcmd tasklist /V /FI "PID eq $5 $+ " > $mircdirtask1.txt
while (!$read(task1.txt,n,1) && $lines(task1.txt) > 1) { write -dl1 task1.txt }
comcmd tasklist /M /FI "PID eq $5 $+ " > $mircdirtask2.txt
comcmd tasklist /SVC /FI "PID eq $5 $+ " > $mircdirtask3.txt
comcmd copy /b /y " $+ $mircdirtask1.txt" + " $+ $mircdirtask2.txt" + " $+ $mircdirtask3.txt" " $+ $mircdirtask.txt"
loadbuf -o task_detail 2 task.txt
tokenize 32 task.txt task1.txt task2.txt task3.txt
!.remove $*
}
:error
reseterror
if ($isfile(task.txt)) { !.remove task.txt }
}
alias -l comcmd {
if (!$1 != $null) return
if ($com(tasklist)) { .comclose tasklist }
.comopen tasklist WScript.Shell
if (!$comerr) { .comclose tasklist $com(tasklist,Run,3,bstr,$+(%,comspec%) /c $1-,uint,0,bool,true) }
}
alias task {
if ($isid) { return task_manager }
elseif ($isfile($windir $+ \system32\tasklist.exe)) { dialog $iif($dialog(task_manager),-v,-md task_manager) task_manager }
else { echo 4 -ag * You do not have Windows XP Professional, the Task Manager will not work on your Version of Windows. }
}
on *:dialog:task_manager:init:*:{
mdx_load
mdx SetControlMDX $dname 2 ListView report grid sortascending showsel rowselect infotip > $views
did -i $dname 2 1 headerdims 1:1 1:2 1:3 1:4 1:5
did -i $dname 2 1 headertext +l 0 Application +r 0 PID +l 0 Session +r 0 SID +r 0 Mem Usage
!.timer -m 1 250 refreshlist
}
on *:dialog:task_manager:sclick:*:{
if ($did == 3) { var %x = $dialog(task_kill,task_kill,-4) }
if ($did == 4) { showdetail $did(2).seltext }
if ($did == 5) { var %x = $dialog(task_filter,task_filter,-4) }
if ($did == 6) { refreshlist }
}
on *:dialog:task_manager:dclick:2:{ showdetail $did($did).seltext }
on *:dialog:task_filter:init:0:{
mdx_load
mdx SetControlMDX $dname 7 UpDown edit arrowkeys numeric alignright left > $ctl_gen
did -bi $dname 7 1 0 0 100000 10 0:1,2:10,5:100
filter -ik task_manager 2 output
did -c $dname 5 1
}
on *:dialog:task_filter:sclick:*:{
if ($did == 4) { did $iif($did($did).state,-e,-b) $dname 5 }
if ($did == 6) { did $iif($did($did).state,-e,-b) $dname 7 }
if ($did == 8) { did $iif($did($did).state,-e,-b) $dname 9 }
if ($did == 10) {
var %o = ""
%o = %o $iif($did(4).state && $did(5).text,/FI "IMAGENAME eq $did(5).text $+ ")
%o = %o $iif($did(6).state && $did(7).text,/FI "PID eq $gettok($did(7),1,32) $+ ")
%o = %o $iif($did(8).state && $did(9).text,/FI "USERNAME eq $did(9).text $+ ")
refreshlist %o
unset %o
}
}
alias -l i_admin {
var %f = " $+ $windir $+ \testfile $+ $ticks $+ .tmp $+ "
write %f $ticks
!.remove %f
return $true
:error
reseterror
return $false
}
alias -l showdetail { set %output = $1- | var %x = $dialog(task_detail,task_detail,-4) | unset %output }
alias -l mdx { dll " $+ $scriptdirdll\mdx.dll $+ " $1- }
alias -l views { return $scriptdirdll\views.mdx }
alias -l bars { return $scriptdirdll\bars.mdx }
alias -l ctl_gen { return $scriptdirdll\ctl_gen.mdx }
alias -l dialogn { return $scriptdirdll\dialog.mdx }
alias -l mdx_load {
mdx SetMircVersion $version
mdx MarkDialog $iif($1,$1,$dname)
}
alias -l output {
if ($tab isin $1-) {
tokenize 9 $1-
tokenize 32 $1
did -a task_filter 5 $6-
}
}
alias -l outputkill {
if ($tab isin $1-) {
tokenize 9 $1-
tokenize 32 $2
did -a task_kill 2 $5
}
}
alias -l refreshlist {
did -b $task 3,4,5,6
did -ri $task 2 1 headerdims autoheader:all
write -c task.txt
var %f = $mircdirtask.txt
comcmd $+(%,comspec%) /c tasklist /NH $1- > %f
window -h @buffer
loadbuf @buffer %f
while (!$read(task.txt,n,1) && $lines(task.txt > 1)) { write -dl1 task.txt }
var %i = 0,%l = $line(@buffer,0)
filter -k @buffer addprocs
window -c @buffer
!.remove task.txt
goto done
:error
reseterror
:done
did -e $task 3,4,5,6
did -i $task 2 1 headerdims autoheader:all
}
alias -l addprocs {
%line = $1-
var %b = $gettok(%line,-2-,32)
var %sid = $gettok(%line,-3,32)
var %sname = $gettok(%line,-4,32)
var %pid = $gettok(%line,-5,32)
var %process = $deltok(%line,-5-,32)
if ($checkid(%pid,$1-)) {
did -a $task 2 $tab(%process,%pid,%sname,%sid,%b)
}
}
alias -l checkid {
if ($1 != $null) {
write -c task.txt
var %f = $mircdirtask.txt
comcmd tasklist /NH /FI "PID eq $1 $+ " > %f
if ($read(task.txt,n,2)) { !.remove task.txt | return $true }
else { !.remove task.txt | return $false }
:error
reseterror
!.remove task.txt
return $false
}
}
alias -l tab {
if (!$1-) { return $chr(9) }
var %tablist = $1
var %i = 2 | while ($ [ $+ [ %i ] ] != $null) { inc %i | %tablist = %tablist $chr(9) $ifmatch }
return %tablist
}
alias -l windir {
.comopen windir WScript.Shell
if $comerr { return }
var %a = $com(windir,ExpandEnvironmentStrings,3,bstr,% $+ windir%)
%a = $com(windir).result
.comclose windir
return %a
}
alias -l RegRead {
if ($1) { .comopen rr WScript.Shell | if !$comerr { var %b = $com(rr,RegRead,3,bstr,$1-),%c = $com(rr).result | .comclose rr | return %c } }
}