论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > C语言程序设计教程
Tag:新手,函数,指针,数据类型,对象,Turbo,入门,运算符,数组,结构,二级,,tc,游戏,试题,问答,编译,视频教程

{教程如何更改其它程序 ListView 控件中某个 Item 的内容_VC技术_C语言教程

文章类别:C语言程序设计 | 发表日期:2010-6-19 10:07:36

如何更改其它程序 ListView 控件中某个 Item 的内容_VC技术_C语言教程

本文来自21视频教程网C语言频道

 //////////////////////////////////////////////////////////// //////////////////////
/*
 *	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,f alse,PID);
		if (!hProcess)
			MessageBox(NULL,"获取进程句柄操作失败!","错误!",NULL);
		else
		{
			plvitem=(LVITEM*)VirtualAllocEx(hProcess, NULL, sizeof(LVITEM), MEM_COMMIT,  PAGE_READWRITE);
			p_MyItemText=(char*)VirtualAllocEx(hPro cess, 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测试通过。

视频教程列表
文章教程搜索
 
C语言程序设计推荐教程
C语言程序设计热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058