QQ登录

只需一步,快速开始

上位机MFC更改任务管理器列表控件内容

[ 复制链接 ]

当前例程实现修改任务管理器中的显示内容。
运行程序,点击按钮就好。
前提前管理器要手动提前打开。
效果如下图

上位机MFC更改任务管理器列表控件内容

上位机MFC更改任务管理器列表控件内容

项目源代码下载
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:上位机MFC更改任务管理器列表控件内容.rar 
文件大小:149.62 KB  售价:1金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我


关键代码
  1. void CGkbc8Dlg::OnButton1()
  2. {
  3.         HWND hwnd;
  4.         int iItem=0;
  5.         LVITEM lvitem, *plvitem;
  6.         DWORD PID;
  7.         HANDLE hProcess;
  8.         char *p_MyItemText;//目标程序中用来存放TEXT的地址

  9.         //The pszText member is the pointer to a null-terminated
  10.         //  string containing the new text; it can also be NULL.
  11.         //以上信息是从API手册中获得的,故在本例中字符串长度不能>=12,
  12.         //以确保字符串后有NULL。
  13.         char str_MyItemText[12]={0};
  14.         strcpy(str_MyItemText,"工控编程吧");
  15.        
  16.        
  17.         hwnd=::FindWindow("#32770","Windows 任务管理器");
  18.         hwnd=::FindWindowEx(hwnd,0,"#32770",0);
  19.         hwnd=::FindWindowEx(hwnd,0,"SysListView32",0);

  20.         if (!hwnd)
  21.                
  22.                 MessageBox("[Windows 任务管理器] 尚未启动!","错误!");
  23.        
  24.         else
  25.         {

  26.                         GetWindowThreadProcessId(hwnd, &PID);
  27.                        
  28.                         hProcess=OpenProcess(PROCESS_ALL_ACCESS,false,PID);
  29.                         if (!hProcess)
  30.                                
  31.                                 MessageBox("获取进程句柄操作失败!","错误!");
  32.                        
  33.                         else
  34.                         {
  35.                                 plvitem=(LVITEM*)VirtualAllocEx(hProcess, NULL, sizeof(LVITEM), MEM_COMMIT, PAGE_READWRITE);
  36.                                 p_MyItemText=(char*)VirtualAllocEx(hProcess, NULL, 12, MEM_COMMIT, PAGE_READWRITE);

  37.                                 if ((!plvitem)||(!p_MyItemText))
  38.                                        
  39.                                         MessageBox("无法分配内存!","错误!");
  40.                                
  41.                                 else
  42.                                 {
  43.                                         MessageBox("本演示程序将更改TaskManager中第6个项目中第1列的内容。","提示");
  44.                                        
  45.                                         iItem=5;//5在这里是第六个(从零开始)
  46.                                         lvitem.iSubItem=0;//同上
  47.                                         lvitem.pszText=p_MyItemText;
  48.                                        
  49.                                         WriteProcessMemory(hProcess, p_MyItemText, &str_MyItemText, 12, NULL);
  50.                                         WriteProcessMemory(hProcess, plvitem, &lvitem, sizeof(LVITEM), NULL);

  51.                                         //向目标程序发送LVM_SETITEMTEXT消息
  52.                                         ::SendMessage(hwnd, LVM_SETITEMTEXT, (WPARAM)iItem, (LPARAM)plvitem);
  53.                                        
  54.                                 }
  55.                         }
  56.                 }
  57.        
  58.         //释放内存
  59.         CloseHandle(hwnd);
  60.         CloseHandle(hProcess);
  61.         VirtualFreeEx(hProcess, plvitem, 0, MEM_RELEASE);
  62.         VirtualFreeEx(hProcess, p_MyItemText, 0, MEM_RELEASE);
  63. }
复制代码


回复

使用道具 举报

快速回复 返回列表 客服中心 搜索