(结贴率100%) 求助如何判断一个DLL是否被加载了? 我是这么判断的比如这个DLL是 1.dllRewrite创建1.dll如果创建失败,则这个DLL正在运行...如果创建成功,则DLL没有运行,那么DLL也变成0KB了,我之前复制到别的文件夹备份,然后恢复但是觉得这个方法太2了.有没有好的方法?遍历就算了...效率慢不老方便,或者给个效率快的代码看看? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ......var DllHandle:THandle=0; s:string;......begin if DllHandle = 0 then begin s:='myDLL.dll'; DllHandle:= LoadLibrary(PChar(s)); end;...... 楼主的办法可行的,也可以用deletefile删除它,删除不成功表示已经加载了或者LoadLibrary动态加载,用一个全局变量保存THandle,判断Handle是否为0 if GetModuleHandle('xxxx.dll') > 0 then 模块加载 else 模块未加载; 1楼4楼可能没明白我的意思,这个DLL不是我的,也不是我来加载,我只是要看这个DLL有没有被人加载. 别的EXE加载了1.dll 我用GetModuleHandle有什么用?这个1.DLL我不加载,也不调用,跟我没任何关系,我就想知道别的程序有没有加载1.DLL而已. 搜整个内存 特征码。。或者遍历 所有进程的dll.. 看来没办法了...求个遍历所有进程DLL代码,看进程DLL里有没有c:\1.DLL 独占写方式打开这个DLL,如果能打开,没加载,否则.... //伪代码 hProcess = OpenProcess( PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, FALSE, processID ); ... //获取进程中所有模块 EnumProcessModules(hProcess, hMods, sizeof(hMods), @cbNeeded)) for ... do begin ... if ( GetModuleFileNameEx( hProcess, hMods[i], szModName, sizeof(szModName) / sizeof(CHAR))) then //to do:你的代码 end; // 释放句柄,解除引用 CloseHandle( hProcess ); 用 改变 1.dll 文件名的方式~ 不能改就是在用... 能改就再改回来... 可以通过遍历进程的方式查看其使用的dll,速度应该挺快的 怎样给TMainMenu添加mousemove事件? 召集 10 位 delphi 骨灰级大牛,共同集资购买巨牛的 RemoteObjects 框架 关于richedit的问题 for 语句中嵌套 for语句中调用dll出错 判断服务器是否存在加密锁 TcxButton的SpeedButtonOptions的down功能 Webbrowser 为什么登录框一直闪而登录不了呢? 急招Delphi程序员(北京) 一个关于PDF文件安全性设置的问题 用query对一个数据库进行查询后,怎么使查询后的结果处于编辑状态 刚接触delphi请教几个小问题 delphi 改变外部程序的位置,大小
s:string;......
begin
if DllHandle = 0 then begin
s:='myDLL.dll';
DllHandle:= LoadLibrary(PChar(s));
end;
......
模块加载 else 模块未加载;
或者遍历 所有进程的dll..
求个遍历所有进程DLL代码,看进程DLL里有没有c:\1.DLL
PROCESS_VM_READ,
FALSE, processID );
... //获取进程中所有模块
EnumProcessModules(hProcess, hMods, sizeof(hMods), @cbNeeded))
for ... do
begin
... if ( GetModuleFileNameEx( hProcess, hMods[i], szModName,
sizeof(szModName) / sizeof(CHAR))) then
//to do:你的代码
end;
// 释放句柄,解除引用
CloseHandle( hProcess );