zoukankan      html  css  js  c++  java
  • 根据名字,获取线程,进程。

    // 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 ");
    DWORD ProcessID = GetProcessIDFromName( (WCHAR*)L"CosClient.exe");
    DWORD ThreadID = GetMainThreadId(ProcessID);
    debug(ProcessID);
    debug(ThreadID);


    printf("My End ");
    getchar();
    return 0;
    }

  • 相关阅读:
    splunk linux安装
    [读书笔记]-时间管理-把时间当做朋友
    [读书笔记]-技术学习-Redis
    [读书笔记]-阅读方法-王者速读法
    vuex、localStorage、sessionStorage之间的区别
    vuex的使用
    Vue常用指令总结
    vue-router参数传递
    Vue-router的基本使用
    v-on精炼
  • 原文地址:https://www.cnblogs.com/clover-xuqi/p/8310540.html
Copyright © 2011-2022 走看看