WriteProcessMemory(hProcess, plvitem, &lvitem, sizeof(LVITEM), NULL)
//向目标程序发送LVM_SETITEMTEXT消息
SendMessage(hwnd, LVM_SETITEMTEXT, (WPARAM)iItem, (LPARAM)plvitem)
注意他发送的是LVM_SETITEMTEXT,那么我们可以使用LVM_GETITEMTEXT或者直接GetWindowText函数.
修改如下:(前面的都一样,不写了)
char szBuffer[MAX_PATH] = ""// 定义缓冲
if (!hwnd)
{
MessageBox(NULL,"[Windows 任务管理器] 尚未启动!","错误!",NULL)
}
else
{
//向目标程序发送LVM_SETITEMTEXT消息
SendMessage(hwnd, LVM_SETITEMTEXT, (WPARAM)iItem, (LPARAM)szBuffer)
// 或者采用这样的方法
GetWindowText(hwnd, szBuffer, MAX_PATH -1)
printf("%s\n", szBuffer)
}
//释放内存
// CloseHandle(hwnd)// 原程序这里是错误的,窗口句柄不需要释放
return 0
}
// Lightning的注解:原程序通过FindWindow函数找到任务管理器中的一个窗口,然后GetWindowThreadProcessId找到所在进程的ID, 再用OpenProcess打开目标进程句柄,如果成功就VirtualAllocEx在目标进程分配内存,将自己要修改的内容写入,然后调用SendMessage函数向目标窗口发送设置字符的消息,将VirtualAllocEx的返回值作为输入缓冲.
设置正确后,VirtualAllocEx分配的内存用VirtualFreeEx释放.
VirtualAlloc在本进程中申请内存,而VirtualAllocEx可以在其它进程中申请内存.
但是如果我们读取的话就不用这么麻烦了.
lvm逻辑卷磁盘管理系统,用来创建分区的时候可以动态调节大小,目的是为了节省磁盘空间,如果总是出错,你可以禁用lvm,分区的时候手动分区,不用lvm 新手只分一个/ 和一个swap区就行了查看目前磁盘分区情况,系统是安装在一块45G的虚拟磁盘上。安装系统时采用了LVM分区方式。其中/soft空间大小为11G查看目前虚拟机的磁盘情况,目前虚拟机中有两块硬盘,/dev/sda 45G,/dev/sdb 55G
创建pv ,通过pvcreate命令将磁盘/dev/sdb创建为一个系统PV
# pvcreate /dev/sdb
将 PV /dev/sdb添加到卷组vg_openstack中。参考下图中标记的数据可知,磁盘已经添加到vg_openstack,而且卷组的空间增加了50G
# vgextend vg_openstack /dev/sdb
为/soft 添加30G的空间。图中标记的位置给出了/soft的大小,以及/soft的lv名称为 /dev/vg_openstack/LogVol04
# lvextend -L +30G -n /dev/vg_openstack/LogVol04
逻辑卷扩展后并不会马上生效,需要使用“resize2fs”命令重新加载逻辑卷的大小,图中可知,/soft已经添加30G空间
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)