• 根据名字,获取线程,进程。


    // 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;
    }

  • 相关阅读:
    电脑间网络连接稳定性检查工具Network Pinger
    C#FirstOrDefault()返回值是否可能是null
    06.请求和响应
    ViewPager2+Fragment+TabLayout
    Android控件
    04.HTTP
    11.ListView
    09.常用控件
    08.回收活动、活动的启动模式
    Android多线程
  • 原文地址:https://www.cnblogs.com/clover-xuqi/p/8310540.html
Copyright © 2020-2023  润新知