Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1954 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Probleme "DllUnregisterServer"

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Probleme "DllUnregisterServer"

n°512488
bubu
Posté le 11-09-2003 à 15:11:07  profilanswer
 

Bonjour a ts,
voila, j'ai fait 3 ligne de code dans lesquelles j'ai
mis ceci :
une instruction qui utilise la fonction "DllUnregisterServer"
d'un filtre DirectShow, et juste après, une intruction
qui modifie un octet dans ce fichier. Et evidemment
j'ai un message d'erreur a l'ouverture du fichier.
 Si je mets la fonction "DllUnregisterServer" après
l'ouverture du fichier ça fonctionne.
J'ai l'impression qu'une fois que VB utilise le fichier
DirectShow, il garde un pointeur (ou qq chose comme ça) sur
ce fichier, et m'interdit(ou Windows) donc de l'ouvrir
en ecriture.
Pareil, si au lieu d'utiliser la fonction "DllUnregisterServer",
j'utilise un control "Windows Media Player" et que je charge
un fichier audio dans celui-ci, meme après avoir fait :
MediaPlayer1.stop
MediaPlayer1.Filename = ""
MediaPlayer1.Enabled = False
Si j'essaye de modifier ce fichier Directshow qui normalement
n'est plus utilisé, et ben ça marche pas non plus.
Si qqun avait une solution ça s'rait super.

mood
Publicité
Posté le 11-09-2003 à 15:11:07  profilanswer
 

n°512494
LetoII
Le dormeur doit se réveiller
Posté le 11-09-2003 à 15:17:11  profilanswer
 

Le double post c mal.


---------------
Le Tyran
n°512508
LetoII
Le dormeur doit se réveiller
Posté le 11-09-2003 à 15:20:16  profilanswer
 

Comprend pas trop ce que tuessaye de faire  :heink:


---------------
Le Tyran
n°512515
bubu
Posté le 11-09-2003 à 15:23:54  profilanswer
 

desolé pour le db post mais comme c'est VB et Api.

n°512575
HelloWorld
Salut tout le monde!
Posté le 11-09-2003 à 15:53:47  profilanswer
 

C'est quoi le but ?
Tu sais ce que tu fais ? (COM tu connais ?)
http://msdn.microsoft.com/library/ [...] l_4u2a.asp


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°512596
bubu
Posté le 11-09-2003 à 16:10:25  profilanswer
 

HelloWorld, j'veux simplement "Unregistered" un filtre
directshow et pouvoir ensuite modifier un octet dans ce fichier.
J'te rassure, c'est pas du piratage, c'est juste une fonction
essentiel qui manque et comme le projet est abandonné, j'me
debrouille comme je peux. Le probleme c'est qu'apparemment,
dés que VB utilise le fichier, soit directement avec
"DllUnregisterServer", soit a travers DirectShow, le fichier
n'est plus accessible qu'en "lecture".

n°512617
HelloWorld
Salut tout le monde!
Posté le 11-09-2003 à 16:28:55  profilanswer
 

Donc tu codes en VB.
Comment tu fais pour appeler DllUnregisterServer ?


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°512632
bubu
Posté le 11-09-2003 à 16:42:24  profilanswer
 

Declare Function RegComAX Lib "G:\Filter\Filter.ax" Alias "DllRegisterServer" () As Long
Declare Function UnRegComAX Lib "G:\Filter\Filter.ax" Alias "DllUnregisterServer" () As

n°512637
bubu
Posté le 11-09-2003 à 16:48:24  profilanswer
 

Bon sinon y aurait bien une autre solution.
Ce s'rait de modifier le fichier source et ajouter la fonction
nécessaire (lecture d'un "Long" dans un fichier (qui ne contient qu'un "Long" ) et attribution de la valeur a une variable.
Mais mes competences en C++ rendent cette possibilitée
impossible.

n°512650
bubu
Posté le 11-09-2003 à 16:59:57  profilanswer
 

Rectification,
utiliser "DllUnregisterServer" ne dérange pas!
ni meme de poser un control "Windows Media Player" sur la
feuille non plus. Mais si je charge un fichier audio
dans le control WMP et que je passe en lecture, meme si je
fais :
MediaPlayer1.Stop
MediaPlayer1.FileName = ""
MediaPlayer1.Enabled = False
,si j'utilise ensuite "DllUnregisterServer" j'ai l'erreur
d'ecriture dans l'fichier.

mood
Publicité
Posté le 11-09-2003 à 16:59:57  profilanswer
 

n°512661
bubu
Posté le 11-09-2003 à 17:07:18  profilanswer
 

Evidemment, j'ai contacté l'auteur du Filtre pour lui parler
de mon probleme et d'essayer de trouver une solution mais
l'E-Mail m'a été retourné car injoignable. Le site de l'auteur
n'a pas non plus été mis a jour depuis 1 an. Et forcément
il n'y a pas d'equivalent ailleurs.

n°512791
HelloWorld
Salut tout le monde!
Posté le 11-09-2003 à 19:11:43  profilanswer
 

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
n°512812
bubu
Posté le 11-09-2003 à 20:19:58  profilanswer
 

Merci pour la reponse.
j'ai essayé la methode avec seulement "DllUnregisterServer" puis
celle avec toute ces fonction :
LoadLibraryRegister,
FreeLibraryRegister,
CloseHandle,
GetProcAddressRegister,
CreateThreadForRegister,
WaitForSingleObject,
GetExitCodeThread,
ExitThread
mais ça na rien changé.(aucun retour d'erreurs des fonctions)

n°512912
bubu
Posté le 11-09-2003 à 23:14:13  profilanswer
 

Juste une petite chose si ça peut vous aider à m'aider....
dans VB, quand j'arrete le programme, je peux meme pas
effacer le filtre directshow! si je sort de VB, je peux.
Je sais plus très bien c'que j'fait mais bon, j'ai
jeter un oeil sur le SDK Microsoft et ai decidé d'essayer :
CoFreeUnusedLibraries et
CoFreeAllLibraries
sans succès.

n°512941
bubu
Posté le 12-09-2003 à 00:06:38  profilanswer
 

Je pense avoir trouvé, ça viendrait pas de VB mais de
DirectShow. J'ai ré-enregistré le filtre et j'ai verifié dans
GraphEdit si il etait bien là. Ensuite j'ai lancé Windows
Media Player 6.4 et chargé un MP3. Dans les propriétés de
WMP j'ai constaté que le filtre etait utilisé.
J'ai stoppé la lecture et fait "Fermer" (donc le MP3 mais pas
WMP). WMP toujours actif, j'ai essayé d'effacer le Filtre
Directshow et Windows n'a pas voulu. J'en conclu que mon
probleme vient de Directshow.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Probleme "DllUnregisterServer"

 

Sujets relatifs
Pb avec DllUnregisterServer[dos] probleme de caracteres dans un fichier
Problème avec les regexp...PHP+Classes+utilisation du parser XML : probleme avec les handlers
[Log4J+JBoss+JMS] Probleme de type de messageProblème d'effacement
Problème protocole DCOM ???DirectShow + Builder 6 => Problème de lieur avec TIME_FORMAT_FRAME
Problème de restauration avec PHP NukeProblème de CSS avec Konqueror
Plus de sujets relatifs à : Probleme "DllUnregisterServer"


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR