Comment lancer une DLL depuis une invite de commande.

Résolu
jeromedu01 Messages postés 52 Date d'inscription mercredi 21 décembre 2005 Statut Membre Dernière intervention 23 février 2010 - 12 mars 2009 à 09:52
jeromedu01 Messages postés 52 Date d'inscription mercredi 21 décembre 2005 Statut Membre Dernière intervention 23 février 2010 - 12 mars 2009 à 14:29
Bonjour a tous,
Premierement, je suis un grand debutant.

J'ai une DLL du type :

Public

Class MyMainClass

      Function SendMsgToUser(
ByVal Mes
As
String)
As
String
            MsgBox(
My.Computer.Clock.LocalTime &
" "
& Mes)

         Return
"sent"

      End
Function
End
ClassJe souhaite lancer l'execution du code depuis une invite de commande (ou commande shell) avec un parametre string ?
Que dois-je ajouter au contenu de la DLL ?

J'aimerai un truc du genre : MaDLL.dll -SendMsgToUser
"Je vais au marche."

Est-ce possible ?

Merci,
Jerome.

14 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
12 mars 2009 à 14:20
je te l'ai dit: pas faisable en VB.Net
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
12 mars 2009 à 10:11
RunDll.exe
0
jeromedu01 Messages postés 52 Date d'inscription mercredi 21 décembre 2005 Statut Membre Dernière intervention 23 février 2010
12 mars 2009 à 11:31
Merci pour ta reponse.
Malheureusement je ne parviens pas a lancer la DLL avec l'execution de la fonction.
Pourrais-tu me donnner la syntaxe?
Je fais : rundll.exe MaDll.dll MyMainClass.SendMsgToUser("Essai").
Mais cela ne fonctionne pas.
Je pense qu'il doit faloir ajouter des infos dans la dll, non ?

Merci,
Jerome.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
12 mars 2009 à 11:39
je ne pense pas que cela fonctionne avec ta dll .Net...

pourquoi dois tu passer par ca ?

tu peux faire une appli exe normale...(ou en console)
et lire les arguments de ligne de commande, comme tout le monde
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jeromedu01 Messages postés 52 Date d'inscription mercredi 21 décembre 2005 Statut Membre Dernière intervention 23 février 2010
12 mars 2009 à 11:56
En fait ma DLL devra communiquer avec windows explorer donc j'aimerai eviter les EXE.
Aussi elle pourrait etre lancee directement et eviter d'avoir un process qui tourne.

Je suis desole mais ne comprend pas l'interet de la commande rundll.exe si nous ne pouvons pas specifier quelle function ou sub demarer? je pense que je suis un peu perdu ?
Pourrais-tu m'en donner les avantages?
Merci encore.
Jerome.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
12 mars 2009 à 12:00
rundll permet de lancer la fonction de ton choix, mais là, tu joues en .NET, un simple LoadProcAdress est inefficace...

"devra communiquer avec windows explorer donc j'aimerai eviter les EXE."

je pige pas bien le lien de cause a effet...
0
jeromedu01 Messages postés 52 Date d'inscription mercredi 21 décembre 2005 Statut Membre Dernière intervention 23 février 2010
12 mars 2009 à 12:08
En fait mon objectif est de creer un addin a windows explorer. Je souhaite dans le menu du click de droite ajouter un element qui copiera des elements historiques du clipboard.
On m'a conseille de faire une DLL appellee a partir des commandes shell presentes dans HKCLASSROOT du registre.

Dans ce cas la commande shell lancerait la DLL avec comme parametre l'element clique par l'utilisateur.
Je pense tout de meme qu'il doit y avoir un moyen meme si on joue en .NET?

Merci beaucoup
Jerome.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
12 mars 2009 à 12:12
il s'agit d'une "shell extension"

http://www.keyongtech.com/432355-creating-shell-extensions-in-c

déconseillé en .NET
0
jeromedu01 Messages postés 52 Date d'inscription mercredi 21 décembre 2005 Statut Membre Dernière intervention 23 février 2010
12 mars 2009 à 12:29
Ok merci pour le lien.
Mais pour ma culture perso comment fait-on pour lancer une fonction specifique au sain d'une DLL avec une commande runddl.exe ?

Merci,
Jerome.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
12 mars 2009 à 12:34
en gros:

rundll32.exe MaDll.dll,SendMsgToUser Essai
0
jeromedu01 Messages postés 52 Date d'inscription mercredi 21 décembre 2005 Statut Membre Dernière intervention 23 février 2010
12 mars 2009 à 13:01
Merci pour la syntaxe. Toutefois certain elements doivent manquer dans ma DLL car je recois un message : missing entry point sendMsgToUser.
As-tu une idee ?
Merci.

Merci,
Jerome.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
12 mars 2009 à 13:11
il faut bien évidemment que ta dll exporte cette fonction...
0
jeromedu01 Messages postés 52 Date d'inscription mercredi 21 décembre 2005 Statut Membre Dernière intervention 23 février 2010
12 mars 2009 à 14:12
Et comment ceci peut-il etre defini en terme de code.?
Que dois-je rajouter a mon code ci dessus pour le faire ?

Merci,
Jerome.
0
jeromedu01 Messages postés 52 Date d'inscription mercredi 21 décembre 2005 Statut Membre Dernière intervention 23 février 2010
12 mars 2009 à 14:29
Ok merci de tes precieuses informations.

Merci,
Jerome.
0
Rejoignez-nous