首 页 ┆ 源码下载 ┆ IT学院 ┆ 字体下载 ┆ 模板下载 ┆ 源码发布 ┆ 广告合作 ┆ 网站地图 ┆ 虚拟主机 ┆ 中文域名
► 设为首页
► 加入收藏
► 联系我们
源码下载 >> ASP源码 | PHP源码 | ASP.net源码 | JSP源码 | CGI源码 | VC/C++源码 | VB源码 | Delphi源码 | Flash源码
文章学院 >> 网络编程 | 网页设计 | 图形图象 | 数据库 | 服务器 | 网络媒体 | 网络安全 | 操作系统 | 办公软件 | 软件开发 | 黑客知识
字体下载 >> 精制字体 | 非英字体 | 艺术字体 | 著名字体 | 哥特式 | 简单字体 | 手写体 | 节假日 | 图案字体 | 精度像素 | 中文字体
模板下载 >> 企业门户 | 数码网络 | 休闲娱乐 | 影视音乐 | 旅游名胜 | 文化艺术 | 电子商务 | 个性展示 | 登陆导航 | Flash模板
►►您当前的位置:源码园 → IT学院 → 软件开发 → VC编程 → 文章内容

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

作者:佚名  来源:网上收集  发布时间:2007-3-27 10:12:58

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

作者:天津/赵春生

下载源代码

一:程序说明

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

  1. 发送的消息不同:前者是读取pszText的内容——发送LVM_GETITEMTEXT;这次是设置pszText,应该发送LVM_SETITEMTEXT;
  2. 字符串缓冲区的作用不同:前者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
  • [] [返回上一页] [打 印]
    • 上一篇文章:简简单单:三个函数实现框架菜单自绘
    • 下一篇文章:在MFC中应用CTreeCtrl控件的技巧

    • 相关文章:
    • 如何更改其它程序 ListView 控件中某个 Item 的内容...
    • 如何更改word默认字体大小及格式
    • [图文]XP系统中如何更改缩略图大小
    • 如何更改Windows XP操作系统序列号
    • 在字符界面下,如何更改文件夹的显示色彩
    关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 源码发布
    Copyright © 2003-2009 Ymyasp.Com. All Rights Reserved .
    备案序号:粤ICP备07029071号