1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
| .386
.model flat,stdcall
option casemap:none
include windows.inc
include kernel32.inc
include user32.inc
include shell32.inc
includelib shell32.lib
includelib kernel32.lib
includelib user32.lib
DlgProc proto :DWORD,:DWORD,:DWORD,:DWORD
InsertColumn proto
scan proto
GetProcessFileName Proto dProcessID:DWORD
.data
Colm db "Process Name",0
.data?
hSnapshot dd ?
hInstance HINSTANCE ?
TProcess PROCESSENTRY32 <>
hList dd ?
hImageList dd ?
himage dd ?
.const
IDC_STATUSBAR1012 equ 1012
ListView equ 1011
IDC_TOOLBAR1014 equ 1014
.code
start:
invoke GetModuleHandle,NULL
mov hInstance,eax
invoke DialogBoxParam,hInstance,1001,NULL,addr DlgProc,NULL
invoke InitCommonControls
invoke ExitProcess,eax
DlgProc proc hWnd:HWND,uMsg:UINT,wParam:WPARAM, lParam:LPARAM
.if uMsg== WM_INITDIALOG
invoke GetDlgItem,hWnd,1011
mov hList,eax
invoke InsertColumn
invoke scan
.elseif uMsg == WM_CLOSE
invoke EndDialog,hWnd,0
.endif
xor eax,eax
ret
DlgProc endp
InsertColumn proc
LOCAL lvc:LV_COLUMN
invoke SendMessage,hList,LVM_DELETEALLITEMS,NULL,NULL
invoke SendMessage,hList,LVM_GETEXTENDEDLISTVIEWSTYLE,NULL,NULL
or eax,LVS_EX_FULLROWSELECT or LVS_EX_GRIDLINES or LVS_EX_FLATSB
invoke SendMessage,hList,LVM_SETEXTENDEDLISTVIEWSTYLE,NULL,eax
mov lvc.imask,LVCF_TEXT+LVCF_WIDTH
mov lvc.pszText,offset Colm
mov lvc.lx,150
invoke SendMessage,hList,LVM_INSERTCOLUMN,0, addr lvc
Ret
InsertColumn endp
scan proc
LOCAL LVI:LV_ITEM
invoke SendMessage,hList,LVM_DELETEALLITEMS,0,0
mov LVI.iItem,0
mov LVI.imask,LVIF_TEXT
invoke CreateToolhelp32Snapshot,TH32CS_SNAPPROCESS,0
mov hSnapshot,eax
mov TProcess.dwSize,SIZEOF TProcess
invoke Process32First,hSnapshot,addr TProcess
nextprocess:
mov LVI.iSubItem,0
invoke Process32Next,hSnapshot,addr TProcess
cmp eax,0
jz exit
;------------------------------------------------------------------
invoke ImageList_Create,16,16,ILC_COLOR16,1,0
mov hImageList, eax
invoke ExtractIcon,hInstance,offset TProcess.szExeFile,0
mov himage,eax
invoke ImageList_Replace,hImageList,0,himage,NULL
invoke DestroyIcon,himage
mov LVI.iImage,0
invoke SendMessage,hList,LVM_SETIMAGELIST,NULL,addr LVI
;------------------------------------------------------------------
mov LVI.pszText,offset TProcess.szExeFile
invoke SendMessage,hList,LVM_INSERTITEM,NULL,addr LVI
inc LVI.iItem
jmp nextprocess
exit:
Ret
scan endp
end start |
Partager