请教:在Delphi程序中如何调用API或别的什么函数卸载Win95/98/NT系统的VXD和DLL?(50分)

  • 主题发起人 主题发起人 snowdeep
  • 开始时间 开始时间
S

snowdeep

Unregistered / Unconfirmed
GUEST, unregistred user!
或通过win95/98/nt的系统工具观察和卸载
系统中当前加载的VXD或DLL?因为我发现有
些特殊的程序在系统刚启动时执行正常,一
旦退出后再执行就不正常,非得重新启动机
器后该程序才能正常执行。
谢谢!
 
FreeLibrary不行,free不了别的进程装载的dll
 
pipi说的对,是无法释放别的程序装载的DLL
我希望的是能将别的程序装载的DLL以及VXD
程序卸载掉,不知到该如何处理?
 
哦,真的很麻烦吗? :(
 
VxD和DLL都能做到。但问题是,有些情况下不能。——如果打开这个 VxD和DLL的进程还没有关闭的话。

如果已经关闭,你可以主动去打开VxD和DLL,然后用它的结构块直接修改引用讲数值,然后在当前进程释放这个VxD和DLL,操作系统就会主动将它从内存中释放掉。

——这种方法可能不能在NT中用。我没有试过。但我调试ISAPI DLL时用过这种用法。
 
是啊,每个在内存中的Dll或者VxD,都有一个引用标记,纪录被应用程序引用的次数
只有当引用数为0时,才会被系统清出内存
 
但是我想问:你可以去关闭别的进程的DLL或VXD么(即使你再你的进程中去引用这个
DLL,然后又清零引用标记)?
 
>>>
不知到,向以前在DOS环境就好了!一个SHELL命令冲出去DEL *.*,或ren xxx.exe xxx.b~k
多方便!建议试试更改注册表吧!一个SYSTEM.DAT(大多内容在这),一个USER.DAT
都是隐含文件,调出来找找,或SYSTEM.INI,WIN.INI!
自己找吧!
弄好了告诉我一声!
 
多人接受答案了。
 
后退
顶部