如何更改其它程序 ListView 控件中某个 Item 的内容

持枪杀鸡99

持枪杀鸡99

2016-01-29 12:10

如何更改其它程序 ListView 控件中某个 Item 的内容,如何更改其它程序 ListView 控件中某个 Item 的内容

如何更改其它程序 ListView 控件中某个 Item 的内容

作者:天津/赵春生

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/cyuyanjiaocheng/)

下载源代码

一:程序说明

  这次我将介绍如何更改其他程序ListView控件中某个Item的内容,关于类似的拙文我已经写了两篇,这是第三篇,本篇和第一篇《如何向其他程序的 ListView 控件发送 LVM_GETITEMTEXT 消息》类似,区别在于:

发送的消息不同:前者是读取pszText的内容——发送LVM_GETITEMTEXT;这次是设置pszText,应该发送LVM_SETITEMTEXT;字符串缓冲区的作用不同:前者pItem用来接收ITEMTEXT,我们可以通过ReadProcessMemory函数来读取其内容;而在本篇中p_MyItemText则用来存放我们要设置的ITEMTEXT,并用WriteProcessMemory函数将其写入到目标程序中。

作为演示,下面的这段程序将更改TaskManager中第6个项目中第1列的内容。程序运行后的效果图:

二:具体实践

///////////////////////////////////////////////////////////////////////////////////* *Send LVM_SETITEMTEXT *版权所有 (C) 2005 天津 赵春生 *2005.10.28 *http://timw.yeah.net *http://timw.126.com *本程序适用于:Win2KP+SP4[Windows TaskManager(5.0.2195.6620)] * WinXP+SP1[Windows TaskManager] *代码在Win2000P+SP4 + VC6+SP6测试通过*///////////////////////////////////////////////////////////////////////////////////#include<windows.h>#include<commctrl.h>int APIENTRY WinMain(HINSTANCE hInstance,                     HINSTANCE hPrevInstance,                     LPSTR     lpCmdLine,                     int       nCmdShow) {HWND hwnd;int iItem=0;LVITEM lvitem, *plvitem;DWORD PID;HANDLE hProcess;char *p_MyItemText;//目标程序中用来存放TEXT的地址//The pszText member is the pointer to a null-terminated//  string containing the new text; it can also be NULL.//以上信息是从API手册中获得的,故在本例中字符串长度不能>=12,//以确保字符串后有NULL。char str_MyItemText[12]={0};strcpy(str_MyItemText,"天津 赵春生");hwnd=FindWindow("#32770","Windows 任务管理器");hwnd=FindWindowEx(hwnd,0,"#32770",0);hwnd=FindWindowEx(hwnd,0,"SysListView32",0);if (!hwnd)MessageBox(NULL,"[Windows 任务管理器] 尚未启动!","错误!",NULL);else{GetWindowThreadProcessId(hwnd, &PID);hProcess=OpenProcess(PROCESS_ALL_ACCESS,false,PID);if (!hProcess)MessageBox(NULL,"获取进程句柄操作失败!","错误!",NULL);else{plvitem=(LVITEM*)VirtualAllocEx(hProcess, NULL, sizeof(LVITEM), MEM_COMMIT, PAGE_READWRITE);p_MyItemText=(char*)VirtualAllocEx(hProcess, NULL, 12, MEM_COMMIT, PAGE_READWRITE);if ((!plvitem)||(!p_MyItemText))MessageBox(NULL,"无法分配内存!","错误!",NULL);else{MessageBox(NULL,"本演示程序将更改TaskManager中第6个项目中第1列的内容。","提示",NULL);iItem=5;//5在这里是第六个(从零开始)lvitem.iSubItem=0;//同上lvitem.pszText=p_MyItemText;WriteProcessMemory(hProcess, p_MyItemText, &str_MyItemText, 12, NULL);WriteProcessMemory(hProcess, plvitem, &lvitem, sizeof(LVITEM), NULL);//向目标程序发送LVM_SETITEMTEXT消息SendMessage(hwnd, LVM_SETITEMTEXT, (WPARAM)iItem, (LPARAM)plvitem);}}}//释放内存CloseHandle(hwnd);CloseHandle(hProcess);VirtualFreeEx(hProcess, plvitem, 0, MEM_RELEASE);VirtualFreeEx(hProcess, p_MyItemText, 0, MEM_RELEASE);return 0;}
三、以上代码在Win2000P+SP4 + VC6+SP6测试通过。

源码可从我的个人主页下载。
http://timw.yeah.net
http://timw.126.com

其它文章:如何向其它程序的ListView控件发送LVM_GETITEMTEXT消息如何选中其它程序ListView控件中的某个Item

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/cyuyanjiaocheng/)
展开更多 50%)
分享

猜你喜欢

如何更改其它程序 ListView 控件中某个 Item 的内容

C语言教程 C语言函数
如何更改其它程序 ListView 控件中某个 Item 的内容

如何选中其他程序ListView控件中的某个Item

C语言教程 C语言函数
如何选中其他程序ListView控件中的某个Item

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

如何使用FindControl查找内容页上的某个控件?

Web开发
如何使用FindControl查找内容页上的某个控件?

在Delphi中如何控制其它应用程序窗口

Delphi
在Delphi中如何控制其它应用程序窗口

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

在一个程序中打开其它应用程序

编程语言 网络编程
在一个程序中打开其它应用程序

如何在windows程序中读取bios内容

编程语言 网络编程
如何在windows程序中读取bios内容

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

用鼠标手势动作来发送命令

用鼠标手势动作来发送命令

获取jsp各种参数

获取jsp各种参数
下拉加载更多内容 ↓