Citation :
Declare Function RegComAX Lib "G:\Filter\Filter.ax" Alias "DllRegisterServer" () As Long
Declare Function UnRegComAX Lib "G:\Filter\Filter.ax" Alias "DllUnregisterServer" () As
|
Je ne sais pas trop comment VB gère cela, mais si, comme je le crois, il génère des entrées dans la table des imports de ton exe, ton exe se retrouve lié de manière explicite à la dll. Ce lien est géré par windows, au même titre qu'un exe est lié à kernel32 par exemple.
Donc tant que ton exe est en mémoire, il reste rattaché à la dll et celle-ci n'est pas unloadé, donc Windows t'interdit de modifier le fichier.
Pour savoir si ce que je pense se passer est ce qui se passe, télécharge dependency walker (www.dependencywalker.com) et analyse ton exe VB.
Si tu trouves un référence vers ladite dll, alors je ne me suis pas trompé.
Si tel est le cas, il faut que tu fasses en lien dynamique avec la dll.
Declare LoadLibrary, GetProcAddress et FreeLibrary. Charge la dll, récupère un pointeur sur DllUnregisterServer, appelle la fonction, et libère la dll.
C'est peut être pas évident à faire en VB, alors je pense qu'il est plus simple d'appeler avec ShellEx regsvr32 et de lui dire de désinscrire le filtre :
ShellEx "regsvr32 /u G:\Filter\Filter.ax"
Voilà.
Stp dit moi ce que fait VB quand on déclare une fonction importée d'une dll via Declare, ca répondra à une vieille interrogation.
---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite