android怎么获取正在运行的系统程序

android怎么获取正在运行的系统程序,第1张

ActivityManager.RunningAppProcessInfo类

说明: 封装了正在运行的进程信息

常用字段:

int pid进程ID

int uid进程所在的用户ID

String processName 进程名,默认是包名或者由android:process=””属性指定

String [ ] pkgList 运行在该进程下的所有应用程序包名

关于ActivityManager.RunningAppProcessInfo更多信息,请查看<Android中应用程序的信息---ActivityManager的使用>

PackageManger类

说明: 封装了对应用程序信息的 *** 作

获得应用程序信息的的方法如下:

public abstract ApplicationInfo getApplicationInfo(String packageName, int flags)

参数:packagename 包名

flags 该ApplicationInfo是此flags标记,通常可以直接赋予常数0即可

功能:返回ApplicationInfo对象

获取系统进程要使用CreateToolhelp32Snapshot()函数得到快照,然后进行遍历,取出自己想要的信息就可以了。下面是我自己写的一个由进程名称得到进程ID的函数,要得到所有的进程,你只要把循环进行完就行。上代码:

DWORD CXXXDlg::GetProeccIDByName(CString& csProName)

{

//AddOutPut()是我自己封装的调试函数,可以不用理会

//使用CreateToolhelp32Snapshot()等函数要包含头文件

//#include <TlHelp32.h>

 AddOutPut(_T("->由进程名字得到进程ID开始..."))

 if (csProName.IsEmpty())

 {

  AddOutPut(_T("!!由进程名字得到进程ID失败,进程ID名字为空!"))

  return 0

 }

 HANDLE hSnapShot = NULL

 hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)

 if (INVALID_HANDLE_VALUE == hSnapShot)

 {

  AddOutPut(_T("!!由进程名字得到进程ID失败,创建快照失败!"))

  return 0

 }

 int nPos = csProName.ReverseFind('\\')

 csProName = csProName.Right(csProName.GetLength() - nPos)

 PROCESSENTRY32 proEntry32 = {0}

 bool bRetval = false

 bool bFind = false

 proEntry32.dwSize = sizeof(PROCESSENTRY32)

 bRetval = Process32First(hSnapShot, &proEntry32) ? true : false

 while (bRetval)

 {

  if (0 == StrCmpI(proEntry32.szExeFile, csProName))

  {

   bFind = true

   break

  }

  bRetval = Process32Next(hSnapShot, &proEntry32) ? true : false

  proEntry32.dwSize = sizeof(PROCESSENTRY32)

 }

 if (!bFind)

 {

  AddOutPut(_T("!!由进程名字得到进程ID失败,未找到该进程!"))

  return 0

 }

 if (hSnapShot != NULL)

 {

  CloseHandle(hSnapShot)

 }

 AddOutPut(_T("->由进程名字得到进程ID成功"))

 return proEntry32.th32ProcessID

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8128480.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存