ShowProcessInfo proc uses edi _dwRow,_lpProcess
LOCAL @stLVI:LV_ITEM
LOCAL @szBuffer[10]:byte
mov edi,_lpProcess
assume edi:ptr PROCESSENTRY32
mov @stLVI.imask,LVIF_TEXT or LVIF_PARAM
push _dwRow
pop @stLVI.iItem
mov @stLVI.iSubItem,0
push _dwRow
pop @stLVI.lParam
invoke wsprintf,addr @szBuffer,offset szTemplate,[edi].th32ProcessID
lea eax,@szBuffer
mov @stLVI.pszText,eax
invoke SendMessage,hList,LVM_INSERTITEM,0,addr @stLVI
inc @stLVI.iSubItem
mov @stLVI.pszText,eax
lea eax,[edi].szExeFile
mov @stLVI.pszText,eax
invoke SendMessage,hList,LVM_SETITEM,0,addr @stLVI
assume edi:nothing
ret
_ShowProcessInfo endp
为什么子项目显示不了进程名··如果我把PROCESSENTRY32改成查找文件的WIN32_FIND_DATA 又能正常加入子项目了··或者我把进程名加到首项目也能正常显示···
------解决方案--------------------
两个地方有问题吧,一个是 LVM_SETITEM 时也要设置 imask 的,即 mov @stLVI.imask,LVIF_TEXT;另外,就是计数用的 edi,但你在调用子程时误写成了 edx:invoke _ShowProcessInfo,edi,addr @stProcess