
#include <windowsh>
#include <Tlhelp32h>
#include <stdioh>
int main()
{
PROCESSENTRY32 pe32;
pe32dwSize = sizeof(PROCESSENTRY32);
HANDLE hProcessShot;
hProcessShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); //获取进程列表,最后一个参数是0
if (hProcessShot == INVALID_HANDLE_VALUE)
{
puts("获取进程列表失败");
return 0;
}
// 创建系统当前进程快照
if (Process32First(hProcessShot,&pe32))//获取下一个进程快照
{
for (int i = 0;Process32Next(hProcessShot, &pe32);i++)
{
printf("%d : %-20s ",i, pe32szExeFile);
TCHAR szStrTemp[50];
wsprintf(szStrTemp,"PID : %d", pe32th32ProcessID);
printf("%-20s ", szStrTemp);
wsprintf(szStrTemp,"cntThreads : %d",pe32cntThreads);
printf("%-20s \n",szStrTemp);
}
}
//遍历进程快照
CloseHandle(hProcessShot);
return 0;
}
这样就行了,直接复制到你的控制台程序试试
1、方法:
在某些情况下,你也许想要知道运行中的子shell的PID。这个PID信息可以在不同的情况下使用。比如,你可以使用shell脚本的PID在/tmp下创建一个唯一的临时文件。有时侯脚本需要检测所有运行的进程,它可以从进程列表中排除自身的子shell。
在bash中,子shell进程的PID存储在一个特殊的变量‘$$’中。这个变量只读,你不可以在脚本中修改它。比如:
#!/bin/bash
echo "PID of this script: $$"
上面的脚本会得到下面的输出:
PID of this script: 6583
除了$$, bash shell还会导出其他的只读变量。比如,PPID存储子shell父进程的ID(也就是主shell)。UID存储了执行这个脚本的当前用户ID。比如:
#!/bin/bash
echo "PID of this script: $$"
echo "PPID of this script: $PPID"
echo "UID of this script: $UID"
输出是:
PID of this script: 6686
PPID of this script: 4656
UID of this script: 1000
上面输出中,PID每次执行都会变化。这个因为每次运行都会创建一个新的shell。另一方面,PPID每次都会一样只要你在同一个shell中运行。
对于所有bash内置变量列表,参考man页。
$ man bash
2、网络搜索“如何在脚本中获取进程ID(PID) - CSDN博客”可找到原贴。
如果只是获取进程列表,可以用
Get-Process如果是想知道某一个进程的详细信息,可以用下列命令:
Get-Process 进程名或
Get-Process 进程名 | FL -Property上面一个列出简单信息,下面一个列出所有的属性信息。
用
Process32First和 Process32Next来扫描当前系统的进程列表,假如目标进程存在的话就做你想要的工作
关闭进程的话用NtTerminateProcess 来实现,前提要用OpenProcess来获取进程句柄的最大权限,还不理解的话可以联系我
如何获取android 进程信息,有需要的朋友可以参考下。
有时候为了完成某些功能比如监测某些程序的运行情况,我们可以通过动态的获取android 进程信息:
1)首先我们定义下进程信息的model:
public class ProcessInfo {
private int pid; // 进程id
private int uid; // 进程所在的用户id
private int memSize; //进程占用的内存,kb
private String processName; // 进程名
public String pkgnameList[] ;//运行在进程里的对应的所有程序的包名
public int getPid() {
return thispid;
}
public void setPid(int pid) {
thispid = pid;
}
public int getUid() {
return thisuid;
}
public void setUid(int uid) {
thisuid = uid;
}
public int getMemSize() {
return thismemSize;
}
public void setMemSize(int memSize) {
thismemSize = memSize;
}
public String getProcessName() {
return thisprocessName;
}
public void setPocessName(String processName) {
thisprocessName = processName;
}
}
其次,我们通过android API 获取进程信息:
// 获得系统进程信息
private ArrayList<ProcessInfo> getRunningAppProcessInfo(){
ActivityManager mActivityManager = (ActivityManager) getSystemService(ContextACTIVITY_SERVICE);
ArrayList<ProcessInfo> processInfoList = new ArrayList<ProcessInfo>();
List<ActivityManagerRunningAppProcessInfo> appProcessList = mActivityManagergetRunningAppProcesses();
for (ActivityManagerRunningAppProcessInfo appProcessInfo : appProcessList) {
int pid = appProcessInfopid;
int uid = appProcessInfouid;
String processName = appProcessInfoprocessName;
int[] myMempid = new int[] { pid };
DebugMemoryInfo[] memoryInfo = mActivityManagergegetProcessMemoryInfo(myMempid);
//kb
int memSize = memoryInfo[0]dalvikPrivateDirty;
ProcessInfo processInfo = new ProcessInfo();
processInfosetPid(pid);
processInfosetUid(uid);
processInfosetMemSize(memSize);
processInfosetPocessName(processName);
processInfopkgnameList = appProcessInfopkgList ;
processInfoListadd(processInfo);
return processInfoList;
}
//判断某进程是否存在
private boolean isProcessExisting(String packageName){
ArrayList<ProcessInfo> processInfoList = getRunningAppProcessInfo();
for(ProcessInfo process : processInfoList){
String[] packageList = processpkgnameList;
for (String pkg : packageList) {
if(pkgequals(packageName)){
return true;
}
}
}
return false;
}
代码要注释哈谢谢
答合理给50
用NtQueryInformationProcess可以查询单个进程的句柄数 但是要打开进程
用NtQuerySystemInformation可以获取所有进程的统计信息,而且没有任何权限要求
这个用一个api就可以解决,你用pdh涉及到的更多
在windows下查看某个运行程序(或进程)的命令行参数
使用下面的命令:
wmic process get caption,commandline /value
如果想查询某一个进程的命令行参数,使用下列方式:
wmic process where caption=”svchostexe” get caption,commandline /value
这样就可以得到进程的可执行文件位置等信息。
以上就是关于C++如何查找进程全部的内容,包括:C++如何查找进程、如何在脚本中获取进程ID、如何用PowerShell获取进程信息等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)