Sephiroth
http://sephiroth.scifi-action.de/board/

Task Manager
http://sephiroth.scifi-action.de/board/viewtopic.php?f=4&t=17
Seite 1 von 1

Autor:  Sephiroth [ 18. März 2008 00:11 ]
Betreff des Beitrags:  Task Manager

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

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/