社区
进程/线程/DLL
帖子详情
根据进程HANDLE获取进程对应的文件名?
猎人66
2001-06-22 03:36:00
我已知某一进程的HANDLE,想获取此进程相应的文件名,我记得好像应该用GetModuleFileName,却不知怎么不行(我在NT下试的,不知9x可否?)
...全文
302
11
打赏
收藏
根据进程HANDLE获取进程对应的文件名?
我已知某一进程的HANDLE,想获取此进程相应的文件名,我记得好像应该用GetModuleFileName,却不知怎么不行(我在NT下试的,不知9x可否?)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sw0324
2001-06-25
打赏
举报
回复
gz
猎人66
2001-06-25
打赏
举报
回复
谢谢!!!我明白你的意思!但我并不是想获取进程的所有MODULE对应的文件名,而是此进程对应的文件名!
应该用GetModuleFileNameEx(h,NULL,buf,sizeof(buf));
但效果不理想,有些进程不行,不能像NT的任务管理器一样!
jazzrabbit
2001-06-24
打赏
举报
回复
源码写如下罢:
HANDLE h=OpenProcess(PROCESS_ALL_ACCESS,FALSE,hProc[i]);//按昭你上面的源码接下写
HMODULE hModules[256];
DWORD cbNeeded=0;
EnumProcessModules(
h, // handle to process
&hModules, // array of module handles
sizeof(hModules), // size of array
&cbNeeded // number of bytes required
);
TCHAR fn[_MAX_PATH];
for (int j=0;j<cbNeeded/sizeof(HMODULE);i++){
//打印出所有对应于h的文件名
GetModuleFileNameEx(h,hModules[j],fn,sizeof(fn));
TRACE0(fn);
//...
}
....
jazzrabbit
2001-06-24
打赏
举报
回复
你还没听懂我的意思.
openprocess返回的句柄会对应多个文件(module)的.
通过传入OpenProcess返回的句柄给EnumProcessModules
则会把对应于这个句柄的所有module句柄一一列出来(返回一个HMODULE数组),
对这个数组中的每一个hmodule用GetModuleFileNameEx返回其路径全名.
不知这样说能明白不...
猎人66
2001-06-24
打赏
举报
回复
up
猎人66
2001-06-24
打赏
举报
回复
up
jazzrabbit
2001-06-23
打赏
举报
回复
老弟,OpenProcess返回的是进程的句柄,不是模块句柄哦!
一个进程可以有多个模块构成,你应当用EnumProcessModules这个函数进一步枚举所有的模块.
对于每一个模块用GetModuleFileNameEx返回其模块名.
猎人66
2001-06-23
打赏
举报
回复
帮帮我吧
猎人66
2001-06-23
打赏
举报
回复
谢谢!
那怎么根据OpenProcess返回句柄获取它相应的文件名?
猎人66
2001-06-22
打赏
举报
回复
不会吧,你看看我的源码:
if(GetVersion()<0x80000000)
{
typedef BOOL (WINAPI *ENUMPROCESSES)(DWORD*,DWORD,LPDWORD);
ENUMPROCESSES EnumProcesses;
HMODULE hPsapi=LoadLibrary("PSAPI.DLL");
EnumProcesses=(ENUMPROCESSES)GetProcAddress(hPsapi,"EnumProcesses");
if(EnumProcesses)
{
DWORD hProc[100];
DWORD nb=0;
if(EnumProcesses(hProc,100*sizeof(DWORD),&nb))
{
nb=nb/sizeof(DWORD);
for(DWORD i=0;i<nb;i++)
{
TListItem* aItem=ListView1->Items->Add();
aItem->Caption=IntToStr(hProc[i]);
char buf[MAX_PATH+1];
HANDLE h=OpenProcess(PROCESS_ALL_ACCESS,FALSE,hProc[i]);
if(h)
{
int iLen=GetModuleFileName(h,buf,MAX_PATH);
buf[iLen]=0;//此处iLen总为0
}
CloseHandle(h);
}
}
}
}
LZLZ
2001-06-22
打赏
举报
回复
我试了一下,可以啊,很正常
CA/TA可信安全应用开发
如何将
handle
- 认证加密算法,如aes-GCM的使用 - 非对称密码学算法RSA的使用,包括加密、解密、签名、验签 - RSA key的处理,包含如何生成RSA KEY,rsakey object如何转换成可见的数组,如何转换der,如何转换pem...
C#根据
进程
名称
获取
进程
的句柄?
C#根据
进程
(程序)名称
获取
进程
(窗口)的句柄? C#如何
获取
其他
进程
(程序)的句柄(不使用FindWindow)? 使用函数: CreateToolhelp32Snapshot GetCurrentWindow
Handle
EnumWindowsProc
Windows下根据
进程
id获得
进程
名
//根据
进程
id获得
进程
名 wstring GetModuleName(DWORD dwPid) {
HANDLE
hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,dwPid); if (INVALID_
HANDLE
_VALUE == hSnapshot) { return L""; } PROCESS...
根据
进程
名
获取
进程
PID以及
进程
今天,帮人解答问题时,用VB.NET写了段根据
进程
名称查找PID的方法。 以前用VB6时积累的API发挥了作用,主要在VB.NET处理API声明时注意一下把所有的long改成Integer,同时如果有Any的话也需要改成Object。 VB6的Long...
获得
进程
下模块的
对应
文件名
PID是
进程
ID
HANDLE
h=OpenProcess(PROCESS_ALL_ACCESS,FALSE,PID);//按昭你上面的源码接下写 HMODULE hModules[256]; DWORD cbNeeded=0; EnumProcessModules( h, //
进程
句柄 &h
进程/线程/DLL
15,471
社区成员
49,182
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章