`
mylove2060
  • 浏览: 335957 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

进程-取得同名可执行程序的进程号

阅读更多
#include "windows.h"
#include <string>
#include "tlhelp32.h"
#include <iostream>
#include <stdio.h>
#include <tchar.h>
#include <vector>

void FindAllProcessIdsByName(std::vector<DWORD>& outProcessIDsContainer,const std::string& in_processName)   
{   
	PROCESSENTRY32 processInfo;   
	processInfo.dwSize = sizeof(processInfo);   

	HANDLE processesSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);   
	if (processesSnapshot == INVALID_HANDLE_VALUE)   
	{   
		return;   
	}   

	//Process First in snapshot and traverse the list.   
	Process32First(processesSnapshot, &processInfo);   
	if (!in_processName.compare(processInfo.szExeFile))   
	{   
		//Process exists.   
		outProcessIDsContainer.push_back(processInfo.th32ProcessID);   
	}   

	while ( Process32Next(processesSnapshot, &processInfo) )   
	{   
		if ( !in_processName.compare(processInfo.szExeFile) )   
		{   
			//Process exists. 
			outProcessIDsContainer.push_back(processInfo.th32ProcessID);      
		}   
	}   
	CloseHandle(processesSnapshot);    
} 
int _tmain(int argc, _TCHAR* argv[])
{
	std::vector<DWORD> outProcessIDsContainer;
	const std::string exeName = "QQ.exe";
	FindAllProcessIdsByName(outProcessIDsContainer,exeName);
	std::vector<DWORD>::iterator it;
	for(it = outProcessIDsContainer.begin();it!=outProcessIDsContainer.end();++it){
		std::cout<<exeName<<" ProcessID:"<<*it<<std::endl;
	}
	return 0;
}


结果:

QQ.exe ProcessID:580
QQ.exe ProcessID:2848
QQ.exe ProcessID:1380
分享到:
评论

相关推荐

    快速关闭同名进程

    在计算机操作系统中,进程是程序执行的实例,每个运行中的应用程序都可以被看作是一个进程。在某些情况下,用户可能需要快速关闭同名进程,比如当一个程序无响应或者占用过多系统资源时。本文将深入探讨如何快速有效...

    linux查看同名的进程数

    标题和描述提到的"linux查看同名的进程数",实际上是在询问如何统计系统中具有相同名称的进程数量。这里我们将详细讲解如何在Linux环境下执行这个操作,以及相关的一些扩展知识。 首先,`ps -ef` 是一个用于显示...

    pb9.0 pb11.5 强制结束进程 可支持多个同名进程强杀

    标题中的“pb9.0 pb11.5 强制结束进程 可支持多个同名进程强杀”指的是在Progress OpenEdge版本9.0和11.5中,如何强制终止运行的进程,特别是针对相同名称的多个进程进行批量终止的操作方法。Progress OpenEdge是一...

    操作系统进程创建与并发实验报告及源码

     利用fork()函数编写一个程序,要求父进程创建两个子进程,父进程、子进程并发执行,输出并发执行的消息,如: 父进程正在执行….. 子进程1正在执行….. 子进程2正在执行….. 一段时间后,父进程杀死子进程,然后...

    创建新进程:fork函数:fork函数干什么? fork函数与vfork函数的区别在哪里?为何在一个fork的子进程分支中使用_exit函数而不使用exit函数?

    这是因为 exit 函数会执行一些退出处理,例如关闭打开的文件、释放资源等,而 _exit 函数不会执行这些退出处理,这样可以避免子进程在退出时执行不必要的操作。 需要注意的是,在使用 fork 函数时,需要检查返回值...

    怎样终止无法正常终止的进程

    需要注意的是,并非所有同名的进程都拥有相同的PID,因此在执行终止命令前,必须确认目标进程的正确PID。 #### 3. 使用进程名结束进程 除了通过PID来终止进程之外,还可以直接指定进程名称来结束进程。 **命令...

    Delphi如何关闭一个进程

    在操作系统中,进程是程序的一次执行实例,它包含了程序运行时所需的所有资源,如内存、文件句柄等。在Windows系统中,每个进程都有一个唯一的进程ID(PID)。 在Delphi中,我们可以使用`Windows`单元中的API函数来...

    易语言进程名取进程ID源码加例程无模块

    "例程.exe"则是编译后的可执行程序,可以直接运行查看效果。 学习这部分内容,你需要理解易语言的基本语法,包括如何声明变量、调用API函数、处理指针和结构体等。同时,了解Windows API中的进程管理函数也是必要的...

    pb杀进程实例

    这个实例提供了一种简单的方法来结束指定的应用程序进程,而且能够处理多个同名进程,这对于软件升级过程中的后台清理或避免冲突是非常有用的。 在实现这个功能时,PowerBuilder提供了几种可能的API或者系统对象,...

    易语言取相同程序不同的进程.zip

    1. "0.e":这是易语言的源代码文件,很可能是一个示例程序,用于展示如何在易语言中获取和管理多个同名程序的进程。通过阅读和分析这段代码,我们可以学习到如何在易语言中使用特定的命令和函数来实现这一功能。 2. ...

    定时进程关闭器 2.08 破解版

    1. 定时打开进程、执行文件等... 2. 定时关闭进程 3. 定时关机 4. 系统启动时运行 5. 自动加载任务,保存任务,加载任务 6. 调整系统时间 7. 显示系统的所有进程 8. 其它功能: *打开及关闭进程无数量限制 *...

    vc++2005限制只启动一个程序、进程

    在IT行业中,有时我们需要确保特定的应用程序或进程只能在计算机上运行一个实例,避免多个副本同时运行导致资源冲突或不期望的行为。对于开发者来说,这是一个常见的需求,特别是在编写客户端应用程序时,为了保持...

    自动终止进程运行的程序vb

    在操作系统中,进程是正在执行的程序的一个实例,每个进程都有自己的内存空间和系统资源。VB提供了一个`System.Diagnostics`命名空间,其中的`Process`类可以帮助我们管理和操作进程。 在VB中,要终止一个进程,你...

    Node.js-fkill-杀死进程跨平台支持

    例如,用户可以通过进程名称模糊匹配来杀死多个进程,这在处理同名进程群时非常有用。此外,fkill支持发送不同类型的信号,这在需要优雅关闭服务或调试进程行为时特别有用,例如`SIGINT`(模拟用户按下Ctrl+C)、`...

    Linux进程管理.pdf

    Linux进程管理是操作系统的核心组成部分,它涉及到程序的执行、资源分配和系统性能监控等多个方面。在Linux环境中,每一个运行中的程序都可以被看作是一个进程,它们是系统资源的基本分配单位。 1. **程序和进程** ...

    进程创建、终止、阻塞、调度、唤醒原语

    3. **输入优先级和时间片**:如果未发现同名进程,则继续输入进程的优先级(you)和时间片(shi)。 4. **判断容量**:检查当前就绪队列的容量是否已满(最大容量为10个进程)。 5. **分配内存并初始化**:如果未满...

    精易模块中进程名取进程ID(翻译)-易语言

    在操作系统中,进程是程序执行时的一个实例,它包含了程序的执行上下文和资源分配。每个进程都有一个唯一的标识符,即进程ID(PID),用于区分系统中的不同进程。在Windows操作系统中,可以通过任务管理器查看进程...

    进程与线程详解

    - **避免应用程序的多个实例运行**:为了避免同一应用程序的多个实例在一台机器上同时运行,可以利用`Process.GetCurrentProcess()`和`Process.GetProcesses()`方法检查当前是否已有同名进程在运行。通过这种方法,...

    Android开发指南中文版-----应用程序框架

    ### Android开发指南中文版——应用程序框架 #### 一、应用程序基础(Application Fundamentals) 在Android开发中,应用程序的基础架构包括以下几个核心部分: ##### 关键类 Android应用的核心是几个关键类: 1. *...

    精彩编程与编程技巧-Shell & Wait 的程序怎么写?...

    - `bInheritHandle`:布尔值,表示创建的句柄是否可被子进程继承。通常设置为 0。 - `dwProcessId`:目标进程的 ID。 - **返回值**:如果成功,则返回进程句柄;否则返回 0。 2. **CloseHandle**: - **功能**...

Global site tag (gtag.js) - Google Analytics