社区
进程/线程/DLL
帖子详情
j进程和线程?
why168
2003-10-18 10:41:29
请各位大侠们帮小弟一把:
已知:一个应用程序的名称,问: 在我的程序中怎样才能取到这个应用程序的进程句柄?(用什么样的API?)
还有,在Jeffrey Richter 的书中 有一个叫“GetFirstChiled
”
...全文
88
3
打赏
收藏
j进程和线程?
请各位大侠们帮小弟一把: 已知:一个应用程序的名称,问: 在我的程序中怎样才能取到这个应用程序的进程句柄?(用什么样的API?) 还有,在Jeffrey Richter 的书中 有一个叫“GetFirstChiled ”
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
vcforever
2003-10-19
打赏
举报
回复
用OpenProcess()来实现此功能!
具体用法楼上的说的很清楚!
jhyu
2003-10-18
打赏
举报
回复
这个是与操作系统内部的数据结构具体相关的,需要通过系统api实现。以win nt/2k/xp为例,可以通过PSAPI实现。可参考下面的文章:
调用PSAPI函数枚举系统进程
M$的Windows NT开发小组开发了自己Process Status函数,包含在
PSAPI.DLL文件中,这些函数只能在高于NT4.0以后的版本中使用。PSAPI一共有
14个函数[实际PSAPI.DLL输出函数有19个,但其中有5个函数有两个版本,分别
是ANSI和Unicode版本],通过调用这些函数,我们可以很方便的取得系统进程的
所有信息,例如进程名、进程ID、父进程ID、进程优先级、映射到进程空间的模
块列表等等。为了方便起见,以下的例子程序只获取进程的名字和ID。
简单的程序如下:
/********************************************************************
Module:ps.c
说明:调用PSAPI函数枚举系统进程名和ID,Only for NT/2000
*********************************************************************/
#include <windows.h>
#include <stdio.h>
#include "psapi.h"
#pragma comment(lib,"psapi.lib")
void PrintProcessNameAndID( DWORD processID )
{
char szProcessName[MAX_PATH] = "unknown";
//取得进程的句柄
HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
PROCESS_VM_READ,
FALSE, processID );
//取得进程名称
if ( hProcess )
{
HMODULE hMod;
DWORD cbNeeded;
if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod),
&cbNeeded))
GetModuleBaseName( hProcess, hMod, szProcessName, sizeof(szProcessName) );
}
//回显进程名称和ID
printf( "\n%-20s%-20d", szProcessName, processID );
CloseHandle( hProcess );
}
void main( )
{
DWORD aProcesses[1024], cbNeeded, cProcesses;
unsigned int i;
//枚举系统进程ID列表
if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded))
return;
// Calculate how many process identifiers were returned.
//计算进程数量
cProcesses = cbNeeded / sizeof(DWORD);
// 输出每个进程的名称和ID
for ( i = 0; i < cProcesses; i++ )
PrintProcessNameAndID( aProcesses[i] );
return;
}
基于PSAPI,可以显示内存中所有的进程及进程调用的所有模块文件(DLL),可以用来协助程序、DLL的调试,也可以用来查找DLL木马和后门。
当然,这篇文章也有其局限性。高手也可以通过驱动程序等方法进入ring0层(在win nt/2k/xp 即所谓的 核心态),从底层修改os内部的数据结构,从而隐藏进程,令楼主所说的功能无法实现
第二个问题看不懂你说什么
yndfcd
2003-10-18
打赏
举报
回复
用OpenProcess.
打通Linux脉络系列:
进程
、
线程
和调度
第二部分:深入分析
进程
创建的写时拷贝技术、以及Linux的
线程
究竟是怎么回事(为什么称为轻量级
进程
),此部分也会搞清楚
进程
0、
进程
1和托孤,以及睡眠时的等待队列; 第三部分:搞清楚Linux
进程
调度算法,不同的...
什么是
进程
?什么是
线程
?
进程
与
线程
的区别?
目录 什么是
进程
?什么是
线程
? 为什么要有
线程
?
进程
与
线程
的区别?
进程
与
线程
的选择取决条件? 什么是
进程
?什么是
线程
?
进程
:
进程
是并发执行程序在执行过程中资源分配和管理的基本单位(资源分配的最小单位)。
进程
可以理解为一个应用程序的执行过程,应用程序一旦执行,就是一个
进程
。每个
进程
都有自己独立的地址空间,...
什么是
进程
?什么是
线程
?
进程
和
线程
之间的区别是什么?
什么是
进程
?什么是
线程
?
进程
是系统中正在运行的一个程序,程序一旦运行就是
进程
。
进程
可以看成程序执行的一个实例。
进程
是系统资源分配的独立实体,每个
进程
都拥有独立的地址空间。一个
进程
无法访问另一个
进程
的变量和数据结构,如果想让一个
进程
访问另一个
进程
的资源,需要使用
进程
间通信,比如管道,文件,套接字等。 一个
进程
可以拥有多个
线程
,每个
线程
使用其所属
进程
的栈空间。
线程
与
进程
的一个主要区别是,统一...
什么是
线程
?与
进程
又有什么区别,为什么要使用它,等对
线程
进行详细介绍
一.什么是
线程
在传统操作系统中,每个
进程
有一个地址空间,而且默认就有一个控制
线程
进程
: 划分空间,加载资源,静态的,资源单位
线程
: 执行代码,执行能力,动态的,执行单位
进程
只是用来把资源集中到一起(
进程
只是一个资源单位,或者说资源集合),而
线程
才是cpu上的执行单位
线程
是依赖于
进程
,一个
进程
可以包含多个
线程
,但是一定有一个主
线程
.
线程
才是CPU执行的最小单元 多
进程
: 同一时刻开启多个
进程
并发/并行的执行 多
线程
: 同一时刻开启多个
线程
并发/并行的执行 二.
线程
与
进程
的区别
线程
共享创建它的
线程
和
进程
有什么区别(简单介绍)
线程
和
进程
有什么区别(简单介绍) 简单介绍 一、
线程
的基本概念
线程
是
进程
中执行运算的最小单位,是
进程
中的一个实体,是被系统独立调度和分派的基本单位,
线程
自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个
进程
的其它
线程
共享
进程
所拥有的全部资源。一个
线程
可以创建和撤消另一个
线程
,同一
进程
中的多个
线程
之间可以并发执行。 ...
进程/线程/DLL
15,471
社区成员
49,181
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章