Code: Select all
;-ini
Structure info
handle.l
process.l
class$
name$
EndStructure
#PROCESS_ALL_ACCESS=$FFF
NewList info.info()
NewList AllHandle()
Procedure.s GetClassName(handle)
class$=Space(1024)
GetClassName_(handle,@class$,Len(class$))
ProcedureReturn Left(class$,Len(class$))
EndProcedure
Procedure.s GetTitle(handle)
name$=Space(1024)
GetWindowText_(handle,@name$,Len(name$))
ProcedureReturn Left(name$,Len(name$))
EndProcedure
Procedure AddInfo(Handle)
process=0
GetWindowThreadProcessId_(handle,@process)
Class$=GetClassName(handle)
Name$=GetTitle(handle)
ResetList(info())
quit=0
i=0
Repeat
If NextElement(info())
If process info()\process
oldprocess=info()\process
a$=Hex(oldprocess)
Else
a$=" ''"
EndIf
AddGadgetItem(0,-1,a$+Chr(10)+info()\class$+Chr(10)+info()\name$+Chr(10)+Hex(info()\handle))
Wend
SetGadgetState(0,0)
EndProcedure
If OpenWindow(0,0,400,512,320,#PB_Window_SystemMenu,"Tasks")
If CreateGadgetList(WindowID())
ListIconGadget(0, 0,0,512,300, "Process",60)
AddGadgetColumn(0,1,"Class",220)
AddGadgetColumn(0,2,"Name",150)
AddGadgetColumn(0,3,"Handle",50)
ButtonGadget(1, 0,300, 128,20,"Send Quit")
ButtonGadget(2, 128,300, 128,20,"Send Close")
ButtonGadget(3, 256,300, 128,20,"Terminate Process")
ButtonGadget(4, 384,300, 128,20,"Refresh List")
RefreshList()
Repeat
event=WaitWindowEvent()
Select event
Case #pb_event_gadget
stat=GetGadgetState(0)
If stat>-1
SelectElement(info(),stat)
stat=1
Else
stat=0
EndIf
Select EventGadgetID()
; Case 0:
; If stat
; Debug Hex(info()\process)+" | "+info()\class$+" | "+info()\name$+" | "+Hex(info()\handle)
; EndIf
Case 1;quit
If stat: postmessage_(info()\handle,#wm_quit,0,0):EndIf
Case 2;close
If stat: postmessage_(info()\handle,#wm_close,0,0):EndIf
Case 3;Terminate
If stat: TerminateProcess(info()\process) :EndIf
Case 4
RefreshList()
EndSelect
EndSelect
Until event=#pb_event_Closewindow
EndIf
EndIf
GPI
PII 333, 256MB, Asus TNT2Ultra 32MB, AWE Gold 64 4MB