根据名字,获取线程,进程。
// GameCapture.cpp : 定義控制臺應用程序的入口點。
//
#include <Windows.h>
#include "stdafx.h"
#include "game-capture.h"
#include <TlHelp32.h>
#include <iostream>
using namespace std;
#define debug(a) cout<<a<<endl;
DWORD GetProcessIDFromName(WCHAR* szName)
{
DWORD id = 0; // 進程ID
PROCESSENTRY32 pe; // 進程信息
pe.dwSize = sizeof(PROCESSENTRY32);
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); // 獲取系統進程列表
if (Process32First(hSnapshot, &pe)) // 返回系統中第一個進程的信息
{
do
{
if (0 == wcscmp(pe.szExeFile, szName)) // 不區分大小寫比較
{
id = pe.th32ProcessID;
break;
}
} while (Process32Next(hSnapshot, &pe)); // 下一個進程
}
CloseHandle(hSnapshot); // 刪除快照
return id;
}
DWORD GetMainThreadId(DWORD ProcessID)
{
THREADENTRY32 te;
DWORD ThreadID;
te.dwSize = sizeof(THREADENTRY32);
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);
if (Thread32First(hSnapshot, &te)) // 第一個線程
{
do
{
if (ProcessID == te.th32OwnerProcessID) // 認為找到的第一個該進程的線程為主線程
{
ThreadID = te.th32ThreadID;
break;
}
} while (Thread32Next(hSnapshot, &te)); // 下一個線程
}
CloseHandle(hSnapshot); // 刪除快照
return ThreadID;
}
int main()
{
printf("My Begin\n");
DWORD ProcessID = GetProcessIDFromName( (WCHAR*)L"CosClient.exe");
DWORD ThreadID = GetMainThreadId(ProcessID);
debug(ProcessID);
debug(ThreadID);
printf("My End\n");
getchar();
return 0;
}
轉載于:https://www.cnblogs.com/clover-xuqi/p/8310540.html
總結
以上是生活随笔為你收集整理的根据名字,获取线程,进程。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何进行网站的安全测试
- 下一篇: 并不对劲的后缀数组