根据名字,获取线程,进程。
// 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
根据名字,获取线程,进程。相关推荐
- java里新建线程设置线程名字_多线程开发不得不掌握,设置和获取线程名称及JVM如何运行的...
原标题:多线程开发不得不掌握,设置和获取线程名称及JVM如何运行的 欲善编程,多看.多敲.多讨论:动眼.动手.动大脑. 1 如何设置和获取线程名称 多线程的运行状态是不确定的,在程序开发过程中,想要获 ...
- 【多线程】线程的引入,创建线程的方式,设置线程名字、获取名字,线程优先级priority,加入休眠的方法,,后台线程,礼让线程,Join,中断线程,某电影院,共有100张票线程流程图,3售票窗口,
多线程 1.线程的引入 进程: 正在运行的程序,是系统进行资源分配和调用的独立单位.每一个进程都有它自己的内存空间和资源. 线程: 是进程的单个顺序控制流,或者说就是一个单独执行的路径 一个进程如果只 ...
- windows 获取当前进程/线程的ID、句柄和内核地址
获取当前进程 / 线程的 ID .句柄和内核地址 在用户态( RING3 )和内核态( RING0 )下,获取这些值的函数是不同的,而且这些函数的实现原理也是不同的,下面做个小结: 1. 用户态( R ...
- java pid 获取句柄_获取进程pid、根据进程pid获取线程pid、获取线程进程句柄
======================================= 获取进程pid ======================================= #include &qu ...
- 进程handle获取线程_获取进程中的线程列表
进程handle获取线程 The System.Diagnostics namespace contains functions that allow you to manage processes, ...
- 你如何在java中获取线程堆_如何在Windows上获取未在控制台中运行的Java进程的线程和堆转储...
问题 我有一个Java应用程序,我从控制台运行,然后控制台执行另一个Java进程.我想获得该子进程的线程/堆转储. 在Unix上,我可以做akill -3 但是在Windows AFAIK上获取线程转 ...
- java 线程不足_jvm - 如何在没有运行缺点的Windows上获取Java进程的线程和堆转储...
jvm - 如何在没有运行缺点的Windows上获取Java进程的线程和堆转储 我有一个Java应用程序,我从控制台运行,然后控制台执行另一个Java进程. 我想获得该子进程的线程/堆转储. 在Uni ...
- linux c 获取进程p id,详解Linux获取线程的PID(TID、LWP)的几种方式
在 Linux C/C++ 中通常是通过 pthread 库进行线程级别的操作. 在 pthread 库中有函数: pthread_t pthread_self(void); 它返回一个 pthrea ...
- 集合到文件 文件到集合 点名器 集合到文件数据排序版 标准输入流 打印流 对象序列化流 对象返序列化流 Properties 游戏次数 进程和线程 线程 多线程的实现方式 设置和获取线程名称
文章目录 集合到文件 文件到集合 点名器 集合到文件数据排序版 标准输入流 打印流 对象序列化流 对象返序列化流 Properties 游戏次数 进程和线程 线程 多线程的实现方式 设置和获取线程名称 ...
- 获取线程的名字以及修改
1.获取线程对象的名字 String tName=线程对象.getName(); 2..修改线程对象的名字 线程对象.setName("线程的名字"); 3.当线程没有设置名字 ...
最新文章
- QIIME 2用户文档. 16鉴定和过滤嵌合体序列q2-vsearch(2018.11)
- 云数据管理公“云信达”获东方富海数千万A轮投资
- iOS打包framework - Swift完整项目打包Framework,嵌入OC项目使用
- Java EE重新审视设计模式:异步
- 解决锚点在IE8中失效
- 【SSH框架】之Spring系列(一)
- 一张纸厚度大约是什么_折叠103次,纸厚度就能超过宇宙直径?科学家解释让人如坠冰窖!...
- JavaScript——BOM知识
- EasyUI的datagrid每行数据添加操作按钮的方法
- html分享到微博,前端实现分享内容到微博、QQ、QQ空间、豆瓣等平台
- 天涯百宝箱功能的js脚本--只看楼主
- 2019保研Tips:双非推免南京大学
- opencv19:轮廓凸包,距离与匹配
- 什么才是真正的架构设计
- 删除后别人的微信号变成wxid_微信偷偷更新:终于能改微信号,每年改一次
- 参考文献名称怎么复制_PDF格式的英文文献怎么翻译成中文?教你一招最简单快速的办法...
- 如何二叉树里面查找一个数
- 事务的4个特性——ACID(原子性、一致性、隔离性和持久性)、更新丢失问题...
- windows 7修改网络名称
- 企业是否需要引入OA系统要考虑的几个问题
热门文章
- 华为机器狗 VS 波士顿狗,谁更胜一筹?
- 苹果证实收购Drive.ai自动驾驶汽车初创公司
- 再谈fedora下的音乐和视频播放器的安装
- 批评“古风”歌词“狗屁不通”就是不尊重?我们又都成了“垃圾听众”
- 微软推出新逆天开源语言Bosque,告别 for 循环,提高开发效率!
- CAN总线基础(二)
- 计算机应用基础 pdf 陈建军教案,温州市第二职业中等专业学校(温五中) 教学资源 温州市《计算机应用基础》学业水平测试考纲(转发)...
- 485有时候从机接收指令没反应_原来微信发语音不好听,是你没掌握这2个技巧!快去试试吧...
- Android Studio查看Gradle版本
- stm32qspi内存映射_STM32F7-discovery QSPI接口使用心得