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

根据名字,获取线程,进程。相关推荐

  1. java里新建线程设置线程名字_多线程开发不得不掌握,设置和获取线程名称及JVM如何运行的...

    原标题:多线程开发不得不掌握,设置和获取线程名称及JVM如何运行的 欲善编程,多看.多敲.多讨论:动眼.动手.动大脑. 1 如何设置和获取线程名称 多线程的运行状态是不确定的,在程序开发过程中,想要获 ...

  2. 【多线程】线程的引入,创建线程的方式,设置线程名字、获取名字,线程优先级priority,加入休眠的方法,,后台线程,礼让线程,Join,中断线程,某电影院,共有100张票线程流程图,3售票窗口,

    多线程 1.线程的引入 进程: 正在运行的程序,是系统进行资源分配和调用的独立单位.每一个进程都有它自己的内存空间和资源. 线程: 是进程的单个顺序控制流,或者说就是一个单独执行的路径 一个进程如果只 ...

  3. windows 获取当前进程/线程的ID、句柄和内核地址

    获取当前进程 / 线程的 ID .句柄和内核地址 在用户态( RING3 )和内核态( RING0 )下,获取这些值的函数是不同的,而且这些函数的实现原理也是不同的,下面做个小结: 1. 用户态( R ...

  4. java pid 获取句柄_获取进程pid、根据进程pid获取线程pid、获取线程进程句柄

    ======================================= 获取进程pid ======================================= #include &qu ...

  5. 进程handle获取线程_获取进程中的线程列表

    进程handle获取线程 The System.Diagnostics namespace contains functions that allow you to manage processes, ...

  6. 你如何在java中获取线程堆_如何在Windows上获取未在控制台中运行的Java进程的线程和堆转储...

    问题 我有一个Java应用程序,我从控制台运行,然后控制台执行另一个Java进程.我想获得该子进程的线程/堆转储. 在Unix上,我可以做akill -3 但是在Windows AFAIK上获取线程转 ...

  7. java 线程不足_jvm - 如何在没有运行缺点的Windows上获取Java进程的线程和堆转储...

    jvm - 如何在没有运行缺点的Windows上获取Java进程的线程和堆转储 我有一个Java应用程序,我从控制台运行,然后控制台执行另一个Java进程. 我想获得该子进程的线程/堆转储. 在Uni ...

  8. linux c 获取进程p id,详解Linux获取线程的PID(TID、LWP)的几种方式

    在 Linux C/C++ 中通常是通过 pthread 库进行线程级别的操作. 在 pthread 库中有函数: pthread_t pthread_self(void); 它返回一个 pthrea ...

  9. 集合到文件 文件到集合 点名器 集合到文件数据排序版 标准输入流 打印流 对象序列化流 对象返序列化流 Properties 游戏次数 进程和线程 线程 多线程的实现方式 设置和获取线程名称

    文章目录 集合到文件 文件到集合 点名器 集合到文件数据排序版 标准输入流 打印流 对象序列化流 对象返序列化流 Properties 游戏次数 进程和线程 线程 多线程的实现方式 设置和获取线程名称 ...

  10. 获取线程的名字以及修改

    1.获取线程对象的名字   String tName=线程对象.getName(); 2..修改线程对象的名字 线程对象.setName("线程的名字"); 3.当线程没有设置名字 ...

最新文章

  1. QIIME 2用户文档. 16鉴定和过滤嵌合体序列q2-vsearch(2018.11)
  2. 云数据管理公“云信达”获东方富海数千万A轮投资
  3. iOS打包framework - Swift完整项目打包Framework,嵌入OC项目使用
  4. Java EE重新审视设计模式:异步
  5. 解决锚点在IE8中失效
  6. 【SSH框架】之Spring系列(一)
  7. 一张纸厚度大约是什么_折叠103次,纸厚度就能超过宇宙直径?科学家解释让人如坠冰窖!...
  8. JavaScript——BOM知识
  9. EasyUI的datagrid每行数据添加操作按钮的方法
  10. html分享到微博,前端实现分享内容到微博、QQ、QQ空间、豆瓣等平台
  11. 天涯百宝箱功能的js脚本--只看楼主
  12. 2019保研Tips:双非推免南京大学
  13. opencv19:轮廓凸包,距离与匹配
  14. 什么才是真正的架构设计
  15. 删除后别人的微信号变成wxid_微信偷偷更新:终于能改微信号,每年改一次
  16. 参考文献名称怎么复制_PDF格式的英文文献怎么翻译成中文?教你一招最简单快速的办法...
  17. 如何二叉树里面查找一个数
  18. 事务的4个特性——ACID(原子性、一致性、隔离性和持久性)、更新丢失问题...
  19. windows 7修改网络名称
  20. 企业是否需要引入OA系统要考虑的几个问题

热门文章

  1. 华为机器狗 VS 波士顿狗,谁更胜一筹?
  2. 苹果证实收购Drive.ai自动驾驶汽车初创公司
  3. 再谈fedora下的音乐和视频播放器的安装
  4. 批评“古风”歌词“狗屁不通”就是不尊重?我们又都成了“垃圾听众”
  5. 微软推出新逆天开源语言Bosque,告别 for 循环,提高开发效率!
  6. CAN总线基础(二)
  7. 计算机应用基础 pdf 陈建军教案,温州市第二职业中等专业学校(温五中) 教学资源 温州市《计算机应用基础》学业水平测试考纲(转发)...
  8. 485有时候从机接收指令没反应_原来微信发语音不好听,是你没掌握这2个技巧!快去试试吧...
  9. Android Studio查看Gradle版本
  10. stm32qspi内存映射_STM32F7-discovery QSPI接口使用心得