进程篇----获取进程ID(By ProcessName)CreateToolhelp32Snapshot

通过ToolHelper中的API函数 CreateToolhelp32Snapshot来获取进程ID。

 


BOOL GetProcessIdByProcessImageName(HANDLE* ProcessID,

	const TCHAR* ProcessImageName

	)

{

	BOOL IsOk = FALSE;

	HANDLE SnapshotHandle = INVALID_HANDLE_VALUE;

	PROCESSENTRY32 ProcessEntry32;

	ProcessEntry32.dwSize = sizeof(PROCESSENTRY32);

	int LastError = 0;

	

	SnapshotHandle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

	//TH32CS_SNAPPROCESS:Includes all processes in the system in the snapshot.To enumerate the processes,

	if (SnapshotHandle == INVALID_HANDLE_VALUE)

	{

		LastError = GetLastError();

		return FALSE;

	}

 

	if (!Process32First(SnapshotHandle, &ProcessEntry32))

	{

 

		LastError = GetLastError();

		goto Exit;

	}

 

	do

	{

		if (_tcsicmp(ProcessEntry32.szExeFile, ProcessImageName) == 0)

		{

			*ProcessID = (HANDLE)ProcessEntry32.th32ProcessID;

			IsOk = TRUE;

			goto Exit;

		}

	} while (Process32NextW(SnapshotHandle, &ProcessEntry32));

 

Exit:

 

	if (SnapshotHandle != INVALID_HANDLE_VALUE)

	{

		CloseHandle(SnapshotHandle);

	}

	SnapshotHandle = INVALID_HANDLE_VALUE;

	SetLastError(LastError);

	return IsOk;

 

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值