工控编程吧
标题:
上位机MFC更改任务管理器列表控件内容
[打印本页]
作者:
qq263946146
时间:
2019-8-26 10:35
标题:
上位机MFC更改任务管理器列表控件内容
当前例程实现修改任务管理器中的显示内容。
运行程序,点击按钮就好。
前提前管理器要手动提前打开。
效果如下图
(, 下载次数: 4)
上传
点击文件名下载附件
项目源代码下载
(, 下载次数: 0)
上传
点击文件名下载附件
关键代码
void CGkbc8Dlg::OnButton1()
{
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("[Windows 任务管理器] 尚未启动!","错误!");
else
{
GetWindowThreadProcessId(hwnd, &PID);
hProcess=OpenProcess(PROCESS_ALL_ACCESS,false,PID);
if (!hProcess)
MessageBox("获取进程句柄操作失败!","错误!");
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("无法分配内存!","错误!");
else
{
MessageBox("本演示程序将更改TaskManager中第6个项目中第1列的内容。","提示");
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);
}
复制代码
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4