工程编译输出文件为Test.exe
#include "windows.h"
#include <string>
#include "tlhelp32.h"
#include <iostream>
#include <stdio.h>
#include <tchar.h>
#include <vector>
DWORD FindProcessIdByName(const std::string& in_processName)
{
PROCESSENTRY32 processInfo;
processInfo.dwSize = sizeof(processInfo);
HANDLE processesSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
if (processesSnapshot == INVALID_HANDLE_VALUE)
{
return 0;
}
//Process First in snapshot and traverse the list.
Process32First(processesSnapshot, &processInfo);
if (!in_processName.compare(processInfo.szExeFile))
{
//Process exists.
CloseHandle(processesSnapshot);
return processInfo.th32ProcessID;
}
while ( Process32Next(processesSnapshot, &processInfo) )
{
if ( !in_processName.compare(processInfo.szExeFile) )
{
CloseHandle(processesSnapshot);
return processInfo.th32ProcessID;
}
}
CloseHandle(processesSnapshot);
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
std::cout<<"Current Process ID:"<<GetCurrentProcessId()<<std::endl;
std::cout<<"Test.exe Process ID:"<<FindProcessIdByName("Test.exe")<<std::endl;
return 0;
}
结果:
Current Process ID:4148
Test.exe Process ID:4148
分享到:
相关推荐
优先级调度算法是一种根据进程优先级高低决定进程执行顺序的方法。在C++中实现这个算法,通常需要定义一个结构体来表示进程,包括进程ID、执行时间、优先级等属性。然后创建一个进程队列,可以使用链表或优先级队列...
8. **执行程序**:`TestProcName.exe`是编译后的可执行文件,可以直接在Windows环境中运行,实现根据进程名查找并显示对应进程ID的功能。 9. **项目文件**:`.vcxproj.filters`和`.vcxproj.user`是Visual Studio...
其他的可显示当前进程信息的API函数如GetStartupInfo()和GetProcessShutdownParameters() 可给出进程的配置信息。 通常,一个进程需要它的运行期环境的信息。例如API函数GetModuleFileName() 和GetCommandLine() ,...
在计算机系统中,进程是操作系统的基本执行单元,它们可以并发执行以提高系统资源的利用率。本文将深入探讨“进程互斥”、“并发”、“同步”和“死锁”这四个核心概念,以及与之相关的进程状态转换和调度策略。 ...
例如,Process.Id获取进程ID,Process.PriorityClass设置进程优先级,Process.MainModule获取主模块(通常是可执行文件)的信息,包括模块名和版本号。描述中的“文件描述 版本号”就是指Process.MainModule....
可以分为静态优先级和动态优先级,前者在进程创建时确定,后者可随时间变化。 5. **抢占式调度**:允许高优先级进程中断正在执行的低优先级进程。这提高了对实时任务的响应,但也增加了上下文切换的开销。 在C#中...
- 每次调度选择优先数最高的进程执行,直至其完成或时间片耗尽。 - 每次调度后,更新各进程的PCB并打印当前运行进程、就绪队列及进程状态,以便监控进程调度情况。 - 循环此过程,直至所有进程完成。 3. **参考...
此外,“新建”功能允许用户创建新的进程,这可能通过调用`System.Diagnostics.Process.Start()`方法来实现,可以启动一个指定的可执行文件或脚本。“删除”功能则指的是结束进程,这通常通过调用`Process.Kill()`或...
- **进程**:是程序的一次执行过程,是系统进行资源分配和调度的基本单位。每个进程都拥有一个独立的地址空间。 - **子进程**:当一个进程创建了另一个进程时,后者被称为前者的子进程。子进程继承了父进程的部分...
在Java编程中,获取当前系统所有进程主要是通过与操作系统交互来实现的。有两种主要的方法:一种是通过系统宿主命令,另一种是使用JNI(Java Native Interface)。 1. 通过系统宿主命令获取: 这种方法适用于跨...
一个程序可以对应多个进程,比如通过并发执行,而一个进程也可能执行多个程序片段,如子程序调用。此外,进程还具备操作系统提供的两个关键抽象:逻辑控制流和私有地址空间,前者让每个程序看似独占CPU,后者确保每...
在操作系统设计中,进程调度是核心功能之一,它负责决定哪个进程应该在什么时候获得CPU执行。本主题将深入探讨五种常见的进程调度算法:优先级调度、最短进程算法(Shortest Process Next, SPN)、最短剩余时间算法...
4. **写入PID**:如果没有其他进程,将自己的PID写入文件,然后继续执行程序。 5. **保持锁**:在进程运行期间保持文件锁,防止其他进程在同一时间启动。 6. **释放锁**:在进程结束前,必须释放文件锁,以便其他...
本例中的"进程处理器程序"是一个用C#语言实现的应用,它提供了丰富的进程操作功能,包括进程的列举、进程的切换、启动新进程、杀死进程以及命令行处理。接下来,我们将深入探讨这些知识点。 首先,**进程的列举**是...
而"进程管理"可能包含的是通过Java实现的进程控制和通信的示例代码,比如如何执行外部程序、读取其输出、管理进程间通信等。 总的来说,这个课程设计项目通过Java语言,让学生实际操作线程和进程的管理,加深对操作...
消息传递又可以分为直接通信和间接通信,前者发送进程直接将消息发送给接收进程,后者通过信箱(Mailbox)作为中间实体。直接通信链路固定,而间接通信可以连接多个进程。 Send和Receive原语是消息传递的典型操作。...
总结,"取得进程信息辅助类"是通过封装上述的PSAPI API来简化进程信息获取的过程。开发者可以通过此类轻松地访问和管理系统的进程,进行性能监控、调试或其他高级操作。通过学习和理解这些文件,你可以更好地掌握...
取进程时间是指获取特定进程运行的时间,包括进程启动后到当前时刻的总时间,以及进程执行的用户模式时间和内核模式时间。在易语言中,这通常通过调用Windows API中的`GetProcessTimes`函数实现。该函数可以获取进程...
在操作系统中,进程是程序执行的基本单位,它们在系统中不断地进行着各种状态的转换,以完成各自的任务。本文将详细探讨"进程状态转换"这一主题,包括创建进程、挂起进程、唤醒进程以及结束进程这四个关键环节。 ...
- **时间片轮转算法**:将处理器时间分成一个个时间片,每次调度选择队列中的第一个进程执行一个时间片,之后再将其放入队列末尾等待下一轮调度。这种方法适用于交互式系统,能够较好地满足响应时间的要求。 通过...