WIN32 视图列表控件的问题
_ShowProcessInfo proc uses edi _dwRow,_lpProcessLOCAL @stLVI:LV_ITEM
LOCAL @szBuffer: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,.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,.szExeFile
mov @stLVI.pszText,eax
invoke SendMessage,hList,LVM_SETITEM,0,addr @stLVI
assume edi:nothing
ret
_ShowProcessInfo endp
为什么子项目显示不了进程名··如果我把PROCESSENTRY32改成查找文件的WIN32_FIND_DATA 又能正常加入子项目了··或者我把进程名加到首项目也能正常显示··· 我也想知道为设么 :sweat:版主说这样的话.... 贴上全部代码··希望好心人能帮忙修改····
.386
.model flat,stdcall
option casemap:none
include windows.inc
include user32.inc
include kernel32.inc
include comctl32.inc
includelib comctl32.lib
includelib user32.lib
includelib kernel32.lib
.data?
hInstance dd ?
hWinMain dd ?
hList dd ?
.data
szClassName db 'ListViewWinClass',0
szAppName db '视图列表程序',0
LVMClassName db 'SysListView32',0
szLVCaption1 db '句柄',0
szLVCaption2 db '文件名称',0
szLVCaption3 db '文件名称aaaa',0
szTemplate db '%08x',0
.code
_ShowProcessInfo proc uses edi _dwRow,_lpProcess
LOCAL @stLVI:LV_ITEM
LOCAL @szBuffer: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,.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,.szExeFile
mov @stLVI.pszText,eax
invoke SendMessage,hList,LVM_SETITEM,0,addr @stLVI
assume edi:nothing
ret
_ShowProcessInfo endp
_FillFileInfo proc uses edi
LOCAL @hSnapshot
LOCAL @stProcess:PROCESSENTRY32
invoke CreateToolhelp32Snapshot,TH32CS_SNAPPROCESS,0
mov @hSnapshot,eax
mov @stProcess.dwSize,sizeof @stProcess
invoke Process32First,@hSnapshot,addr @stProcess
xor edi,edi
.while eax
invoke _ShowProcessInfo,edx,addr @stProcess
inc edi
invoke Process32Next,@hSnapshot,addr @stProcess
.endw
invoke CloseHandle,@hSnapshot
ret
_FillFileInfo endp
_InsertColumn proc
LOCAL @stLVC:LV_COLUMN
mov @stLVC.imask,LVCF_TEXT OR LVCF_WIDTH
mov @stLVC.pszText,offset szLVCaption1
mov @stLVC.lx,100
invoke SendMessage,hList,LVM_INSERTCOLUMN,0,addr @stLVC
OR @stLVC.imask,LVCF_FMT
mov @stLVC.pszText,offset szLVCaption2
mov @stLVC.lx,200
mov @stLVC.fmt,LVCFMT_LEFT
invoke SendMessage,hList,LVM_INSERTCOLUMN,1,addr @stLVC
mov @stLVC.pszText,offset szLVCaption3
mov @stLVC.lx,200
mov @stLVC.fmt,LVCFMT_LEFT
invoke SendMessage,hList,LVM_INSERTCOLUMN,2,addr @stLVC
ret
_InsertColumn endp
_WndProc proc uses esi edi ebx,hWnd,uMsg,wParam,lParam
mov eax,uMsg
.if eax==WM_CLOSE
invoke DestroyWindow,hWnd
invoke PostQuitMessage,0
.elseif eax==WM_CREATE
invoke CreateWindowEx, NULL, addr LVMClassName, NULL, LVS_REPORT+WS_CHILD+WS_VISIBLE, \
0,0,800,700,hWnd, NULL, hInstance, NULL
mov hList, eax
invoke _InsertColumn
invoke _FillFileInfo
;
.else
invoke DefWindowProc,hWnd,uMsg,wParam,lParam
ret
.endif
xor eax,eax
ret
_WndProc endp
_WinMain proc
LOCAL @stWC:WNDCLASSEX
LOCAL @stMsg:MSG
invoke GetModuleHandle,0
mov hInstance,eax
invoke RtlZeroMemory,addr @stWC,sizeof @stWC
mov @stWC.cbSize,sizeof WNDCLASSEX
mov @stWC.style,0
mov @stWC.lpfnWndProc,offset _WndProc
mov @stWC.cbClsExtra,0
mov @stWC.cbWndExtra,0
push hInstance
pop @stWC.hInstance
mov @stWC.hIcon,0
invoke LoadCursor,hInstance,IDC_ARROW
mov @stWC.hCursor,eax
mov @stWC.hbrBackground,COLOR_WINDOW+1
mov @stWC.lpszMenuName,0
mov @stWC.lpszClassName,offset szClassName
mov @stWC.hIconSm,0
invoke RegisterClassEx,addr @stWC
invoke CreateWindowEx,NULL,addr szClassName,addr szAppName,WS_OVERLAPPEDWINDOW,\
400,400,800,800,0,0,hInstance,0
mov hWinMain,eax
invoke ShowWindow,hWinMain,SW_SHOWNORMAL
invoke UpdateWindow,hWinMain
.while TRUE
invoke GetMessage,addr @stMsg,0,0,0
.break .if eax==0
invoke TranslateMessage,addr @stMsg
invoke DispatchMessage,addr @stMsg
.endw
ret
_WinMain endp
start:
invoke InitCommonControls
invoke _WinMain
invoke ExitProcess,0
end start 自己已经找到原因···是太粗心了·· 版主回家了{:5_97:}
页:
[1]