c++-MFC如何获取像任务管理器一样的数据

问题描述

MFC如何获取像任务管理器一样的数据

按照网络上面的一些资源,我已经可以获得了进程的pid和进程名称,不过进程名称是英文的,
然后获取文件路径的时候也只能获得部分文件的路径,,就如图所示,
但是我想获得,这样的信息,并且可以根据一些关键字(比如腾讯QQ)来强制关闭一些进程。
有没有高手可以来帮帮忙,如果回答的好可以追加

解决方案

Advanced Task Manager in MFC

完全模拟,功能更多,源码也有。

解决方案二:

1。管理员权限
2。添加一个64位兼容程序,64位进程的映像路径由64位程序读取并进程通信给32位的程序(你的任务管理器)
3。根据进程路径取文件的版本信息,版本信息里有程序名称,描述,公司,版本号等等你想要的资源,事实上任务管理器也是这么取的。

解决方案三:

 #include <TlHelp32.h>
#include <pdh.h>
#pragma comment(lib,"pdh.lib")
#include <PSAPI.H>
#pragma comment(lib,"psapi.lib")
// 返回指定进程的句柄数
BOOL EnableDebugPrivilege(BOOL fEnable)
{
 BOOL fOK = FALSE;
 HANDLE hToken = NULL;
 if(OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken)){
  TOKEN_PRIVILEGES tp;
  tp.PrivilegeCount =1;
  LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&tp.Privileges[0].Luid);
  tp.Privileges[0].Attributes = fEnable ? SE_PRIVILEGE_ENABLED : 0;
  AdjustTokenPrivileges(hToken,FALSE,&tp,sizeof(tp),NULL,NULL);
  fOK = (GetLastError()==ERROR_SUCCESS);
  CloseHandle(hToken);
 }
 return fOK;
}
DWORD GetProcHandleCount(HANDLE hProcess)
{
 if(!EnableDebugPrivilege(TRUE))
 {
  return 0;
 }
 HANDLE hQuery=NULL;
 PdhOpenQuery(NULL,0,&hQuery);
 if(NULL==hQuery)
 {
  return 0;
 }
 HANDLE hCounter=NULL;
 char szProcessName[MAX_PATH] = "unknown";
 HMODULE hMod=NULL;
 GetModuleBaseName( hProcess, hMod, szProcessName, sizeof(szProcessName) );
 char szName[MAX_PATH]="";
 _tsplitpath(szProcessName,NULL,NULL,szName,NULL);
 char szCounterPath[MAX_PATH]="";
 sprintf(szCounterPath,"Process(%s)Handle Count",szName);
 PdhAddCounter(hQuery,szCounterPath,0,&hCounter);
 if(NULL==hCounter || INVALID_HANDLE_VALUE==hCounter)
 {
  PdhCloseQuery(hQuery);
  return 0;
 }
 DWORD nHandles=0;
 if(ERROR_SUCCESS==PdhCollectQueryData(hQuery))
 {
  PDH_FMT_COUNTERVALUE      pdhfmtHandles;
  if(ERROR_SUCCESS==PdhGetFormattedCounterValue(hCounter, PDH_FMT_LONG, NULL, &pdhfmtHandles))
   nHandles = DWORD(pdhfmtHandles.longValue);
 }
 if(NULL!=hCounter && INVALID_HANDLE_VALUE!=hCounter)
  PdhRemoveCounter(hCounter);
 if(NULL!=hQuery && INVALID_HANDLE_VALUE!=hQuery)
  PdhCloseQuery(hQuery);
 EnableDebugPrivilege(FALSE);
 return nHandles;
}

解决方案四:

编写一个任务管理器/进程获取/PID获取

解决方案五:

这些信息在exe文件的版本信息的描述中,获取了进程完整的路径和程序名,你就可以找到它,用getifileversion就可以得到。

解决方案六:

http://wanderwarriorhsiao.blog.hexun.com/16610100_d.html

解决方案七:

获取 Windows 任务管理器中应用程序和进程 任务

开发原理与实现" rel="nofollow">Windows任务管理器开发原理与实现

网上很多类似的资源,查找一下吧。

时间: 2024-09-09 15:57:36

c++-MFC如何获取像任务管理器一样的数据的相关文章

模态对话框-MFC关于获取子窗口CWnd

问题描述 MFC关于获取子窗口CWnd 1.需要实现的功能,点击Button然后弹出一个自定义的WaveArea对话框,然后获取WaveArea->Group的CWnd指针. 2.但是我通过和WaveArea对话框绑定的CMYDialog中的OnSize()函数去获取这个CWnd,得到的总是NULL. 3.测试过,不管是创建模态对话框还是非模态对话框,都无法在自己定义的类中获取CWnd 指针. 求大神指导!! 解决方案 你在CTestGroupDlg中定义一个WaveArea对话框类的成员变量或

mfc 如何获取列表框的表头的字符数据

问题描述 mfc 如何获取列表框的表头的字符数据 求助:我使用了一个list constrol列表框,表头如下: 姓名 性别 成绩 如何获取表头的那些字符串:姓名,性别 解决方案 LV_COLUMN lvColumn; char uin[20]; lvColumn.pszText=uin; lvColumn.cchTextMax =20; lvColumn.mask = LVCF_TEXT; if(pListCtrl->GetColumn(1,&lvColumn)) { CString df

mfc 数据库-MFC一个获取计算机软硬件信息的小工具,获得信息显示 并存入数据库

问题描述 MFC一个获取计算机软硬件信息的小工具,获得信息显示 并存入数据库 创建一个基于MFC界面的小工具,点击扫描按钮之后,实现获取如下功能,并将信息显示的界面上 获取本机操作系统类型 获取本机MAC地址 获取IP地址 获取硬盘序列号及硬盘大小 获取内存大小 获取IE浏览器版本 获取CPU类型和主频 获取操作系统安装时间和安装语言 获取Server pack版本号 获取操作系统windows防火墙状态(打开或关闭) 扫描结果存入数据库,数据库类型任选其一 小弟刚学MFC,求大神帮忙

mfc 如何获取字符串中的16进制数据

问题描述 mfc 如何获取字符串中的16进制数据 mfc 如何获取字符串中的16进制数据,如字符串"0x123F"或"123F",获取16进制数据0x123F 解决方案 C++实现二进制.八进制.十进制.十六进制的相互转换 解决方案二: 这种算法只能针对特殊的格式字符串吧,不能做到万能的算法. 你这种需求你肯定知道字符串的大致格式,那么你就只有根据你的需求来匹配16进制的. 比如你可以搜索0x开头的,然后在后面继续匹配. 解决方案三: 先读取字符串,然后根据你的格式

获取打印机正在打印的数据

问题描述 获取打印机正在打印的数据 现在有一个需求,我的想法是写一个程序,一直监听打印机,如果有打印数据,先获取需要打印的数据,进行一定的加工然后再放回打印机继续打印.我现在只有这个想法但是不知道如何实现,请大神们提供一点思路,不限语言,越方便越好 解决方案 我也想要这答案,期待求解

图片-前台获取一个picture类型的数据应该怎么解析

问题描述 前台获取一个picture类型的数据应该怎么解析 这是一个图像流数据,应该怎么转换成二进制 解决方案 static String getImageBinary(){ File f = new File(request.getParameter("图片的URL")); BufferedImage bi; try { bi = ImageIO.read(f); ByteArrayOutputStream baos = new ByteArrayOutputStream(); Im

InfoPath开发实战(2):获取XML文件中的数据

本节的内容: 如何在InfoPath中使用数据连接来从XML文件中获取数据 如何通过代码来修改数据连接中的XML文件路径 打开Visual Studio 2008,以"InfoPath 2007表单模板"为项目模板新建一个项目. 项目创建完后,就会看到一个空空如也的mainifest.xsf文件,这就是InfoPath表单的设计区域,我们可以使用"工具箱"和"版式"面板来设计表单. 我们先不急于设计表单,而是添加一个数据连接.为了让示例更加有趣,

如何根据班级获取学员下拉框数据

前台页面 <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>根据班级获取学员下拉框数据</title> <script type="text/javascript" > //1.页面加载完毕后创建异步对象 请求班级数据 window.onload = function (

JS获取URL中的参数数据

 这篇文章主要介绍了JS获取URL中的参数数据,有需要的朋友可以参考一下   代码如下: function getParam(paramName) {     paramValue = "";     isFound = false;     if (this.location.search.indexOf("?") == 0 && this.location.search.indexOf("=") > 1) {