WinAsm Studio, The Assembly IDE - Free Downloads, Source Code
Sponsors
Articles
Programming Quick Start
32-bit Assembler is Easy
Porting Iczelion tutorials
What is FASM
Hard Drive Recovery
Wiring your own LAN
Personal menu
Welcome Guest
User:
Pass:
Register!
Resend Validation Email
 
Forum
Pages (2) [1] 2   ( Go to first unread post )

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
Quote Post


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 huh.gif :

user posted image

Merci a tout qui travaille pour nous aide biggrin.gif

PMEmail Poster
Top
aderfiad
Quote Post


New Member
*

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


No answer ??? ohmy.gif
PMEmail Poster
Top
SeaFarer
Quote Post


Extremely Active Member
******

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


QUOTE (aderfiad @ Dec 4 2009, 07:48 AM)
No answer ???  ohmy.gif

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. JC_coffee.gif
PM
Top
aderfiad
Quote Post


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



sad.gif sad.gif sad.gif sad.gif sad.gif
PMEmail Poster
Top
SeaFarer
Quote Post


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. ohmy.gif

Try using SHGetFileInfo instead. Also there is no need to use ImageList_AddIcon. wink.gif


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
PM
Top
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

Topic Options Pages (2) [1] 2  Reply to this topicStart new topicStart Poll

 

Sponsors
Computer Science

Internet
C/C++
Hardware & PC maintenance

HiEditor

General Discussions
Suggestions/Bug Reports
WinAsm Studio

General Discussions
Suggestions/Bug Reports
WinAsm Studio FAQ
Multilingual User Interface
Add-Ins
Assembly Programming

Main
Newbies
Projects
Custom Controls
Snippets
Announcements & Rules

Announcements

General

Online Degrees - Distance Learning
The Heap
Russian
Google