syslistview32(syslistview32清空)
怎样给syslistview32控件添加一行
ListView控件多列设置:
#include Commctrl.h
LVCOLUMN pcol;
pcol.mask = 0x01|0x02|0x04|0x08|0x10|0x20;
pcol.fmt = LVCFMT_LEFT ;
pcol.cchTextMax = 5;
pcol.cx = 70;
pcol.iImage = NULL;
pcol.iOrder = 0;
pcol.iSubItem = 0;
pcol.pszText = "时间";
ListView_InsertColumn(GetDlgItem(hwnd,IDC_LIST1),1,pcol);
pcol.pszText = "空间";
ListView_InsertColumn(GetDlgItem(hwnd,IDC_LIST1),1,pcol);
加入数据:
void WINAPI ListView_SetItemText(
HWND hwnd, //list控件句柄
int i, //第几行
Int iSubItem, //第几列
LPCSTR pszText ); //文本内容
LVITEM lvItem={0};
ListView_InsertItem(GetDlgItem(hwnd,IDC_LIST1),(LPARAM)lvItem);
ListView_InsertItem(GetDlgItem(hwnd,IDC_LIST1),(LPARAM)lvItem);
//先需要插入一行,才能对这行输入内容
ListView_SetItemText(GetDlgItem(hwnd,IDC_LIST1),0,0,"411");
ListView_SetItemText(GetDlgItem(hwnd,IDC_LIST1),0,1,"414");
ListView_SetItemText(GetDlgItem(hwnd,IDC_LIST1),1,0,"141");
ListView_SetItemText(GetDlgItem(hwnd,IDC_LIST1),1,1,"414");
用python怎么查看syslistview32的内容
from?win32con?import?PAGE_READWRITE,?MEM_COMMIT,?MEM_RESERVE,?MEM_RELEASE,\
????PROCESS_ALL_ACCESS
from?commctrl?import?LVM_GETITEMTEXT,?LVM_GETITEMCOUNT
?
import?struct
import?ctypes
import?win32api
import?win32gui
?
GetWindowThreadProcessId?=?ctypes.windll.user32.GetWindowThreadProcessId
VirtualAllocEx?=?ctypes.windll.kernel32.VirtualAllocEx
VirtualFreeEx?=?ctypes.windll.kernel32.VirtualFreeEx
OpenProcess?=?ctypes.windll.kernel32.OpenProcess
WriteProcessMemory?=?ctypes.windll.kernel32.WriteProcessMemory
ReadProcessMemory?=?ctypes.windll.kernel32.ReadProcessMemory
memcpy?=?ctypes.cdll.msvcrt.memcpy
?
?
def?readListViewItems(hwnd,?column_index=0):
?
????#?Allocate?virtual?memory?inside?target?process
????pid?=?ctypes.create_string_buffer(4)
????p_pid?=?ctypes.addressof(pid)
????GetWindowThreadProcessId(hwnd,?p_pid)?#?process?owning?the?given?hwnd
????hProcHnd?=?OpenProcess(PROCESS_ALL_ACCESS,?False,?struct.unpack("i",pid)[0])
????pLVI?=?VirtualAllocEx(hProcHnd,?0,?4096,?MEM_RESERVE|MEM_COMMIT,?PAGE_READWRITE)
????pBuffer?=?VirtualAllocEx(hProcHnd,?0,?4096,?MEM_RESERVE|MEM_COMMIT,?PAGE_READWRITE)
?
????#?Prepare?an?LVITEM?record?and?write?it?to?target?process?memory
????lvitem_str?=?struct.pack('iiiiiiiii',?*[0,0,column_index,0,0,pBuffer,4096,0,0])
????lvitem_buffer?=?ctypes.create_string_buffer(lvitem_str)
????copied?=?ctypes.create_string_buffer(4)
????p_copied?=?ctypes.addressof(copied)
????WriteProcessMemory(hProcHnd,?pLVI,?ctypes.addressof(lvitem_buffer),?ctypes.sizeof(lvitem_buffer),?p_copied)
?
????#?iterate?items?in?the?SysListView32?control
????num_items?=?win32gui.SendMessage(hwnd,?LVM_GETITEMCOUNT)
????item_texts?=?[]
????for?item_index?in?range(num_items):
????????win32gui.SendMessage(hwnd,?LVM_GETITEMTEXT,?item_index,?pLVI)
????????target_buff?=?ctypes.create_string_buffer(4096)
????????ReadProcessMemory(hProcHnd,?pBuffer,?ctypes.addressof(target_buff),?4096,?p_copied)
????????item_texts.append(target_buff.value)
?
????VirtualFreeEx(hProcHnd,?pBuffer,?0,?MEM_RELEASE)
????VirtualFreeEx(hProcHnd,?pLVI,?0,?MEM_RELEASE)
????win32api.CloseHandle(hProcHnd)
????return?item_texts
print?readListViewItems(197140)
获取syslistview32内容失败
不兼容。获取syslistview32内容失败是因为不兼容,软件不兼容指的是该软件和当前系统不兼容,不能完美运行该程序,如果强制运行可能出现未知错误;不兼容是指硬件之间。
如何获取另外程序中SysListView32组件的内容
n2=FindWindowEx(n1, 0, "SysListView32", "") '得到ListView控件的窗口句柄号。 xmn=SendMessage(n2, %LVM_GETITEMCOUNT, 0, 0) '获取ListView项目数
请教类名为SysListView32是什么控件
你好。
根据你的描述:
类名为SysListView32就是超级列表框
消息方面,MSDN讲得很详细。
如何获取外部窗体上SysListView32控件内容
在DLL命令中插入.版本2.DLL命令 取窗口标题_, 整数型, "user32", "GetWindowTextA", , 取得一个窗体的标题(caption)文字,或者一个控件的内容(在vb里使用:使用vb窗体或控件的caption或text属性) 复制到lpString的字串长度;不包括空中止字符。会设置GetLastError .参数 窗口句柄, 整数型, , 欲获取文字的那个窗口的句柄 .参数 缓冲区, 文本型, , 预定义的一个缓冲区,至少有cch+1个字符大小;随同窗口文字载入 .参数 缓冲尺寸, 整数型, , lp缓冲区的长度;