delphi 怎么调用sendmessage获取取其它程序窗口listviewj里的数据内容
就是读取不到数据,哪位大神帮我研究一下
procedure TForm1.btn1Click(Sender: TObject);
var
whwnd,hlistview:HWND;
headerhwnd:Integer;
rows,cols:Integer;
ThreadID:DWORD;
ProcessID:DWORD;
hProcess:THandle;
p_lvitem:^TLVItem;
tmplvitem:TLVItem;
i,j:Integer;
pItem:LPTSTR;
ptr:DWORD;
ItemBuf:array [0..511] of Char;
OutSize,WriteSize:DWORD;
s:string;
begin
whwnd:=FindWindow('#32770','Windows 任务管理器');
whwnd:=FindWindowEx(whwnd,0,'#32770',nil);
hlistview:=FindWindowEx(whwnd,0,'SysListView32',nil);
// ShowMessage(IntToStr(hlistview));
//总行数:进程的数量
rows:=SendMessage(hListview,LVM_GETITEMCOUNT,0,0);
//列表列数
headerhwnd := SendMessage(hListview,LVM_GETHEADER, 0, 0); //listview的列头句柄
cols:=SendMessage(headerhwnd, HDM_GETITEMCOUNT,0,0);
ThreadID:=GetWindowThreadProcessId(hListview,@ProcessID);
//打开并插入进程
hProcess:=OpenProcess(PROCESS_VM_OPERATION or PROCESS_VM_READ or PROCESS_VM_WRITE or PROCESS_QUERY_INFORMATION, FALSE,ProcessID);
//申请代码的内存区
p_lvitem:=VirtualAllocEx(hProcess,nil, SizeOf(TLVITEM),MEM_COMMIT, PAGE_READWRITE);
GetMem(p_lvitem,SizeOf(TLVITEM));
for i:=0 to rows-1 do
begin
for j:=0 to cols-1 do
begin
tmplvitem.mask:=LVIF_TEXT;
tmplvitem.iItem:=i;
tmplvitem.iSubItem:=j;
tmplvitem.cchTextMax:=512;
pItem:=nil;
pItem:=LPSTR(VirtualAllocEx(hProcess, nil, 512, MEM_COMMIT, PAGE_READWRITE));
tmplvitem.pszText:=pItem;
WriteProcessMemory(hProcess , p_lvitem,@tmplvitem, sizeof(tmplvitem),WriteSize);
SendMessage(hListview, LVM_GETITEMW,i,Integer(p_lvitem));
ZeroMemory(@ItemBuf,512);
ReadProcessMemory(hProcess, pItem, @ItemBuf, 512, OutSize);
s:= s+ ' ' + ItemBuf;
VirtualFreeEx(hProcess, pItem, 0, MEM_RELEASE);
end;
mmo1.Lines.Add(s);
end;
VirtualFreeEx(hProcess, p_lvitem, 0, MEM_RELEASE)
CloseHandle(hProcess);//关闭打开的进程对象
end;
相关推荐
diagram-design三个使用示例.rar
agram-design 是一款面向 Claude Code 的 AI 图表设计工具,主打"编辑级品质",开箱即用,无需构建与外部依赖。
window版本的x64的nginx-1.31.7+http-flv-moudel1.2.14
window版本的x64的nginx-1.31.7 带有http-flv-moudel1.2.14模块、openSSL4.0.3、zlib1.3.2、pcre2-10.49 nginx.conf中已写好配置
招商效率低考核难达标?数据驱动实现从大海捞针到精准触达的招商升级.docx
科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。
科技成果转化最后一公里怎么打通?AI赋能技术经理人全链条服务.docx
科技成果转化最后一公里怎么打通?AI赋能技术经理人全链条服务
【多智能体强化学习】基于CTDE范式的值分解与Actor-Critic算法实现:合作竞争环境下QMIX、MADDPG与MAPPO的工程应用
内容概要:本文系统介绍了多智能体强化学习(MARL)的核心概念、主流算法与工程实现方法,重点围绕Dec-POMDP问题建模和CTDE(集中训练、分散执行)范式展开。详细解析了值分解类算法(如IQL、VDN、QMIX、QPLEX)和Actor-Critic类算法(如MADDPG、COMA、MAPPO、MASAC),并通过PyTorch实现了QMIX、MADDPG和MAPPO的关键代码模块,配以流程图说明训练机制。文章还提供了选型建议、常用开源框架(如PyMARL、PettingZoo、SMAC等)以及实践中常见的陷阱与调参经验,强调奖励归一化、done/truncated区分、智能体顺序一致性、多随机种子评估等关键细节。; 适合人群:具备强化学习基础、熟悉PyTorch框架,从事多智能体系统研究或应用的研发人员及研究生,尤其适合工作1-3年希望深入MARL工程落地的技术人员。; 使用场景及目标:①理解多智能体信用分配与非平稳性问题的解决方案;②掌握QMIX、MADDPG、MAPPO等主流算法的设计思想与代码实现;③在合作、竞争或混合动机任务中进行算法选型与调优;④构建可复现、稳定的多智能体训练流程。; 阅读建议:建议结合文中提供的可运行示例代码,在PettingZoo或自定义环境中动手实践,优先使用IQL和VDN验证环境设置,再逐步过渡到QMIX或MAPPO。务必关注工程细节如奖励尺度、目标网络更新和多随机种子评估,以确保结果可靠性和算法性能对比的有效性。


Windows SDK/API
