|
Forum
|
|
|
How to get the icon, I programmed a program that displays the process and i dont know how I can get the icon for all process
|
|
| aderfiad |
|
New Member

Group: Members
Posts: 7
Member No.: 24468
Joined: 15-July 09

|
Hi,
I programmed a program that displays the process and i dont know how I can get the icon for all process
my test :
| CODE | .386 .model flat,stdcall option casemap:none
include windows.inc include kernel32.inc include user32.inc include psapi.inc include gdi32.inc include shell32.inc include comctl32.inc includelib kernel32.lib includelib user32.lib includelib comctl32.lib includelib gdi32.lib includelib psapi.lib includelib shell32.lib
DlgProc PROTO :DWORD,:DWORD,:DWORD,:DWORD
.data
clm1 db "Process Name",0 clm2 db "PID",0 clm3 db "Process Patch",0 num db "%lu",0
.data? File db 512 dup(?)
LVI LV_ITEM <?> hSnapshot dd ? hInstance HINSTANCE ? ThaProcess PROCESSENTRY32 <> hList dd ? buffer db ?
.const
.code start: invoke GetModuleHandle, NULL mov hInstance,eax invoke DialogBoxParam, hInstance, 1001, NULL, addr DlgProc, NULL invoke ExitProcess,eax call InitCommonControls DlgProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
.if uMsg == WM_INITDIALOG invoke GetDlgItem,hWnd,1018 mov hList,eax call InsertColumn call Process .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 clm1 mov lvc.lx,150 invoke SendMessage,hList, LVM_INSERTCOLUMN,0, addr lvc mov lvc.pszText,offset clm2 mov lvc.lx,150 invoke SendMessage,hList, LVM_INSERTCOLUMN,1, addr lvc mov lvc.pszText,offset clm3 mov lvc.lx,250 invoke SendMessage,hList, LVM_INSERTCOLUMN,2, addr lvc Ret InsertColumn endp
Process proc
LOCAL sfi:SHFILEINFO
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 ThaProcess.dwSize,SIZEOF ThaProcess invoke Process32First,hSnapshot,addr ThaProcess
nextt: mov LVI.iSubItem,0 invoke Process32Next,hSnapshot,addr ThaProcess
cmp eax,0 jz exittproc
mov LVI.pszText,offset ThaProcess.szExeFile invoke SendMessage,hList,LVM_INSERTITEM,NULL,addr LVI inc LVI.iSubItem
invoke wsprintf,addr buffer,addr num,ThaProcess.th32ProcessID mov LVI.pszText,offset buffer invoke SendMessage,hList,LVM_SETITEM,NULL,addr LVI inc LVI.iSubItem
invoke OpenProcess,PROCESS_VM_READ+PROCESS_QUERY_INFORMATION,0,ThaProcess.th32ProcessID .if (eax!=0) mov edi,eax invoke GetModuleFileNameEx,eax,0,addr File,sizeof File mov LVI.pszText,offset File .endif invoke SendMessage,hList,LVM_SETITEM,NULL,addr LVI
inc LVI.iSubItem invoke SHGetFileInfo,addr File,0,addr sfi, sizeof SHFILEINFO,SHGFI_SYSICONINDEX or SHGFI_SMALLICON invoke SendMessage,hList, LVM_SETIMAGELIST,LVSIL_SMALL,eax inc LVI.iItem jmp nextt exittproc: invoke CloseHandle,hSnapshot
Ret Process endp
end start |
always this icon  : Merci a tout qui travaille pour nous aide
|
| |
|
|
|
| aderfiad |
|
New Member

Group: Members
Posts: 7
Member No.: 24468
Joined: 15-July 09

|
No answer ???
|
| |
|
|
|
| SeaFarer |
|

Extremely Active Member
     
Group: Members
Posts: 1753
Member No.: 1464
Joined: 2-September 05

|
| QUOTE (aderfiad @ Dec 4 2009, 07:48 AM) | No answer ???  |
Hi
This is how I added the icon image to the listview control for my Startup Manager project...
| CODE | ; Set the ICON image. INVOKE ExtractIcon,hInstance,ADDR File,0 PUSH EAX INVOKE ImageList_AddIcon,hIcons,EAX MOV lvi.iImage,EAX POP EAX INVOKE DestroyIcon,EAX INVOKE SendMessage,hListView,LVM_SETITEM,0,ADDR lvi
|
SHGetFileInfo is preferred to using ExtractIcon, which is obsolete.
|
| |
|
|
|
| aderfiad |
|
New Member

Group: Members
Posts: 7
Member No.: 24468
Joined: 15-July 09

|
thnak but it does not work
| CODE | .386 .model flat,stdcall option casemap:none
include windows.inc include kernel32.inc include user32.inc include psapi.inc include gdi32.inc include shell32.inc include comctl32.inc includelib kernel32.lib includelib user32.lib includelib comctl32.lib includelib gdi32.lib includelib psapi.lib includelib shell32.lib
DlgProc PROTO :DWORD,:DWORD,:DWORD,:DWORD
.data
clm1 db "Process Name",0 clm2 db "PID",0 clm3 db "Process Patch",0 clm4 db "Process Patch",0 num db "%lu",0
.data?
File db 512 dup(?) LVI LV_ITEM <?> hSnapshot dd ? hInstance HINSTANCE ? ThaProcess PROCESSENTRY32 <> hList dd ? buffer db ? hIcons dword ?
.const
.code start: invoke GetModuleHandle, NULL mov hInstance,eax invoke DialogBoxParam, hInstance, 1001, NULL, addr DlgProc, NULL invoke ExitProcess,eax call InitCommonControls DlgProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
.if uMsg == WM_INITDIALOG invoke GetDlgItem,hWnd,1018 mov hList,eax call InsertColumn call Process
.elseif uMsg == WM_SIZE .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 clm1 mov lvc.lx,150 invoke SendMessage,hList, LVM_INSERTCOLUMN,0, addr lvc mov lvc.pszText,offset clm2 mov lvc.lx,150 invoke SendMessage,hList, LVM_INSERTCOLUMN,1, addr lvc mov lvc.pszText,offset clm3 mov lvc.lx,250 invoke SendMessage,hList, LVM_INSERTCOLUMN,2, addr lvc Ret InsertColumn endp
Process proc
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 ThaProcess.dwSize,SIZEOF ThaProcess invoke Process32First,hSnapshot,addr ThaProcess
nextt: mov LVI.iSubItem,0 invoke Process32Next,hSnapshot,addr ThaProcess
cmp eax,0 jz exittproc
mov LVI.pszText,offset ThaProcess.szExeFile invoke SendMessage,hList,LVM_INSERTITEM,NULL,addr LVI inc LVI.iSubItem
invoke wsprintf,addr buffer,addr num,ThaProcess.th32ProcessID mov LVI.pszText,offset buffer invoke SendMessage,hList,LVM_SETITEM,NULL,addr LVI inc LVI.iSubItem
invoke OpenProcess,PROCESS_VM_READ+PROCESS_QUERY_INFORMATION,0,ThaProcess.th32ProcessID .if (eax!=0) mov edi,eax invoke GetModuleFileNameEx,eax,0,addr File,sizeof File mov LVI.pszText,offset File .endif invoke SendMessage,hList,LVM_SETITEM,NULL,addr LVI
invoke ExtractIcon,hInstance,ADDR File,0 push eax invoke ImageList_AddIcon,hIcons,EAX mov LVI.iImage,eax pop eax invoke DestroyIcon,EAX invoke SendMessage,hList,LVM_SETITEM,0,addr LVI
inc LVI.iItem jmp nextt exittproc: invoke CloseHandle,hSnapshot
Ret Process endp
end start
|
|
| |
|
|
|
| SeaFarer |
|

Extremely Active Member
     
Group: Members
Posts: 1753
Member No.: 1464
Joined: 2-September 05

|
| QUOTE (aderfiad @ Dec 5 2009, 09:44 PM) | | ...it does not work |
You were not suppossed to use ExtractIcon. Try using SHGetFileInfo instead. Also there is no need to use ImageList_AddIcon. Try this instead... | CODE | invoke SHGetFileInfo,addr File,0,addr sfi, sizeof SHFILEINFO,SHGFI_SYSICONINDEX or SHGFI_SMALLICON mov LVI.iImage,eax push eax invoke SendMessage,hList,LVM_SETITEM,0,addr LVI pop eax invoke DestroyIcon,EAX
|
|
| |
|
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:
Track this topic
Receive email notification when a reply has been made to this topic and you are not active on the board.
Subscribe to this forum
Receive email notification when a new topic is posted in this forum and you are not active on the board.
Download / Print this Topic
Download this topic in different formats or view a printer friendly version.
|
|
|