扫描系统进程和获取某进程的PID

扫描系统的所有进程

 1 #include <stdio.h>
 2 #include <windows.h>
 3 #include <tlhelp32.h>
 4
 5 int scan()
 6 {
 7     HANDLE            hprocessShap = NULL;
 8     PROCESSENTRY32    pe32         = {0};
 9     hprocessShap = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);
10
11     if(hprocessShap == INVALID_HANDLE_VALUE)
12     {
13         printf("\nCreateToolhelp32Snapshot() failed:%d", GetLastError());
14         return 1;
15     }
16
17     pe32.dwSize = sizeof(PROCESSENTRY32);
18
19     if(Process32First(hprocessShap, &pe32))
20     {
21         do
22         {
23             wprintf(pe32.szExeFile);
24             printf("\n");
25         }
26         while (Process32Next(hprocessShap, &pe32));
27     }
28     else
29     {
30         printf("\nProcess32First() failed:%d", GetLastError());
31     }
32     CloseHandle(hprocessShap);
33     return 0;
34 }
35
36 int main(int argc, char *argv)
37 {
38     scan();
39     return 0;
40 }

获取某进程的PID

有时候在对系统某个进程进行操作时,我们需要获取程序的PID作为参数。其中一个方法当然是在任务管理器的详细信息里寻找,另外一个方法就是通过代码获取到进程的PID直接利用

 1 int getpid(wchar_t *name)
 2 {
 3     HANDLE            hprocessShap = NULL;
 4     //存放快照进程信息的结构体
 5     PROCESSENTRY32    pe32         = {0};
 6     //对系统的进程建立一个快照进行扫描
 7     hprocessShap = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);
 8     if(hprocessShap == INVALID_HANDLE_VALUE)
 9     {
10         printf("\nCreateToolhelp32Snapshot() failed:%d", GetLastError());
11         return 1;
12     }
13     //设置结构体的大小
14     pe32.dwSize = sizeof(PROCESSENTRY32);
15     //Process32First获得第一个进程的句柄
16     if(Process32First(hprocessShap, &pe32))
17     {
18         //匹配输入的进程名
19         do
20         {
21             if(!wcscmp(name, pe32.szExeFile))
22             {
23                 return (int)pe32.th32ProcessID;
24             }
25         }
26         while (Process32Next(hprocessShap, &pe32));
27     }
28     else
29     {
30         printf("\nProcess32First() failed:%d", GetLastError());
31     }
32     CloseHandle(hprocessShap);
33     return 0;
34 }

原文地址:https://www.cnblogs.com/QKSword/p/8343870.html

时间: 2024-10-15 22:53:20

扫描系统进程和获取某进程的PID的相关文章

nodejs的process模块如何获取其他进程的pid

var cmd=process.platform=='win32'?'tasklist':'ps aux'; var exec = require('child_process').exec; var qqname='qq'; exec(cmd, function(err, stdout, stderr) { if(err){ return console.log(err); } stdout.split('\n').filter(function(line){ var p=line.trim(

linux -- 进程的查看、进程id的获取、进程的杀死

进程查看 ps ax : 显示当前系统进程的列表 ps aux : 显示当前系统进程详细列表以及进程用户 ps ax|less : 如果输出过长,可能添加管道命令 less查看具体进程, 如:ps ax|grep XXX(XXX为进程名称) 获取进程id shell获取进程ID的方法: ps -A |grep "cmdname"| awk '{print $1}' pidof "cmdname" pgrep "cmdname" 这三种在bash和

shell脚本每隔2s获取某个进程的cpu和mem数据并保存到csv文件

shell脚本每隔2s获取某个进程的cpu和mem数据并保存到csv文件 shell脚本如下echo "%CPU,%MEM" > cpu_test.csvpid=1 #Can be change by yourselfwhile true do top -bn1 -n 1 -p $pid | tail -1 | awk '{ print $9,$10 }' | sed 's/ /,/' >> cpu_test.csv sleep 2 #delay timedone 脚

linux获取daemon进程的控制台数据

linux提供了一个daemon函数,使得进程可以脱离控制台运行,实现了后台运行的效果.但是进程后台运行后,原本在终端控制台输出的数据就看不到了.那么,怎样才能找回这些数据? 这里,文章主题就围绕着 如何获得后台进程的控制台数据,其中的原理要从daemon说起. daemon主要做两件事: 1.创建子进程,退出当前进程,并且以子进程创建新会话.这样,就算父进程退出,子进程也不会被关闭 2.将标准输入,标准输出,标准错误都重定向/dev/null daemon 实现大致如下: int daemon

Android获取其他进程加载的模块基地址

获取目标进程模块(.so)加载地址是通过解析/proc/[pid]/maps得到的. 可以通过adb shell手动获取: ①. 首先通过ps命令查看进程的pid ②. cat /proc/[pid]/maps 使用程序实现如下代码: #include <stdio.h> int main(int argc, char* argv[]) { if (argc != 3) { printf("pid or soName error\r\n"); return 1; } pid

windows下使用C#获取特定进程网络流量

最近老板接了一个中船重工的项目,需要做一个有关海军软件系统的组件评估项目,项目中有一个子项目需要获取特定进程的各种系统参数,项目使用.NET平台.在获取特定进程各种系统参数时,其它诸如进程ID,进程名,进程私有工作集,进程工作集,进程IO吞吐量,进程CPU占用率等都可以直接使用.NET中的相关API直接获取,例如使用PerformanceCounter对象可以获取进程私有工作集.进程工作集.进程IO吞吐量等,但是对于特定进程的网络上行流量和下行流量却没有办法直接使用.NET中API获取,网上也找

Delphi获取其它进程窗口句柄的3种方法

本文主要跟大家介绍Delphi中获取其它进程的窗口句柄,在Delphi中获取其它进程的窗口句柄,绝大部分人首先想到的会使用:FindWindow或者用GetWindow来遍历查找,如: handle := FindWindow(nil,PChar('窗口的标题')); 或者: procedure TForm1.Button1Click(Sender: TObject); var hCurrentWindow: HWnd; WndText:String; begin hCurrentWindow

获取其他进程中线程状态

进程是由线程组成,启动是的第一个线程为主线程. 对于Windows来说,不存在暂停或恢复进程的概念,因为进程从来不会被安排获得cpu时间. 但是我们可以创建一个函数,用来挂起或者恢复进程中的全部线程,这样就能挂起或者恢复一个进程了. 在进程外获取该进程的线程. 方法: 一.获取目标窗口句柄和进程PID HWND hCalc = ::FindWindow(NULL, "第几课作业 Hardware断点"); GetWindowThreadProcessId(hCalc, &th3

获取当前进程(程序)主窗体句柄并设置wpf的父窗体为此句柄

原文:获取当前进程(程序)主窗体句柄并设置wpf的父窗体为此句柄 有时候在c++调用wpf控件的时候,wpf控件想自己显示窗体,但需要设置owner属性.迂回解决办法是设置wpf的window窗体的父窗体为进程的句柄. 1.获取当前进程id int id = Process.GetCurrentProcess().Id; 2.根据进程id获取进程主句柄 public static class ProcessHelper { private static class Win32 { interna