说明: 封装了正在运行的进程信息
常用字段:
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
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)