45fan.com - 路饭网

搜索: 您的位置主页 > 电脑频道 > 电脑教程 > 阅读资讯:怎么样加载动态DLL实现查询进程路径?

怎么样加载动态DLL实现查询进程路径?

2016-09-02 05:50:12 来源:www.45fan.com 【

怎么样加载动态DLL实现查询进程路径?

前些日子我希望改写一个观察进程的小软件,想查看每个进程的是由于哪些可执行文件启动的

总的来说是与

资源管理器差不多的一个小软件

在实现进程路径的时候 我在网上获取以下代码,可以把进程路径存入sPath了

怎么样加载动态DLL实现查询进程路径?HANDLEhProcess=OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,
怎么样加载动态DLL实现查询进程路径?FALSE,
怎么样加载动态DLL实现查询进程路径?pe.th32ParentProcessID);
////打开进程
怎么样加载动态DLL实现查询进程路径?
怎么样加载动态DLL实现查询进程路径?if(!hProcess)return;
怎么样加载动态DLL实现查询进程路径?HMODULEhMod;
怎么样加载动态DLL实现查询进程路径?DWORDcbNeeded;
怎么样加载动态DLL实现查询进程路径?CStringsPath
="";
怎么样加载动态DLL实现查询进程路径?
怎么样加载动态DLL实现查询进程路径?
if(EnumProcessModules(hProcess,&hMod,sizeof(hMod),&cbNeeded))
怎么样加载动态DLL实现查询进程路径?
{
怎么样加载动态DLL实现查询进程路径?DWORDdw
=GetModuleFileNameEx(hProcess,hMod,sPath.GetBuffer(MAX_PATH),MAX_PATH);
怎么样加载动态DLL实现查询进程路径?
//////////////////////////////////////////////////
怎么样加载动态DLL实现查询进程路径?sPath.ReleaseBuffer();
怎么样加载动态DLL实现查询进程路径?CloseHandle(hProcess);
怎么样加载动态DLL实现查询进程路径?}

怎么样加载动态DLL实现查询进程路径?
怎么样加载动态DLL实现查询进程路径?

但是遇到一个问题 我的VC6 sdk比较老了

没有psapi.lib和psapi.h

没有 GetModuleFileNameEx EnumProcessModules 包含在psapi.h

我在CSDN上发现 一个回复是用LoadLibrary加载 psapi.dll

于是我先找到机子上的psapi.dll

再下一个"Viewdll"DLL函数观察器

打开psapi.dll,果然发现GetModuleFileNameEx EnumProcessModules

两个API,于是我就用以下代码加载

注意:先定义两个分别与以上API同参数的空函数指针

怎么样加载动态DLL实现查询进程路径?怎么样加载动态DLL实现查询进程路径?typedefbool(WINAPI*ENUMPROMODFOC)(HANDLE,HMODULE*,DWORD,LPDWORD);///定义好空数指针类型
怎么样加载动态DLL实现查询进程路径?typedefDWORD(WINAPI*GETMODLEFILENAM)(HANDLE,HMODULE,LPTSTR,DWORD);
怎么样加载动态DLL实现查询进程路径?
怎么样加载动态DLL实现查询进程路径?HMODULEhLibrary
=NULL;
怎么样加载动态DLL实现查询进程路径?
if(NULL==(hLibrary=::LoadLibrary("c:/WINDOWS/system32/psapi.dll")))////载入动态连接库
怎么样加载动态DLL实现查询进程路径?return;
怎么样加载动态DLL实现查询进程路径?
怎么样加载动态DLL实现查询进程路径? ENUMPROMODFOCEnumProcessModules
=NULL;////初始化
怎么样加载动态DLL实现查询进程路径?GETMODLEFILENAMGetModuleFileNameEx=NULL;
怎么样加载动态DLL实现查询进程路径?
怎么样加载动态DLL实现查询进程路径?
if(NULL==(EnumProcessModules=(ENUMPROMODFOC)GetProcAddress(hLibrary,"EnumProcessModules")))return;
怎么样加载动态DLL实现查询进程路径?
怎么样加载动态DLL实现查询进程路径?
if(NULL==(GetModuleFileNameEx=(GETMODLEFILENAM)GetProcAddress(hLibrary,"GetModuleFileNameExA")))return;
怎么样加载动态DLL实现查询进程路径?
怎么样加载动态DLL实现查询进程路径?

就可方便的使用以上的两个API了

详细事项请参阅MSDN

 

本文地址:http://www.45fan.com/dnjc/71036.html
Tags: 实现 动态 DLL
编辑:路饭网
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部