accès aux groupes de discussion, consultation et publication d'articles, recherche de "newsgroups"...
membres, identifiez-vous
é-mail Mot de passe
nouveau ? mot de passe oublié ?
Chargement... Chargement en cours...

Groupes français belges canadiens suisses internationaux Nétiquette
Échangez opinions et commentaires dans les forums de discussion.

Re: Appeler les commandes RunDLL32 avec un ShellExecute

 [  Nouvelle Discussion Nouvelle discussion  |  Répondre au groupe Répondre au groupe  |  fr.comp.os.ms-windows.programmation ] 

Retour : Accueil du site fr comp os ms-windows programmation   charte stats de ce groupe


  Sujet:   Re: Appeler les commandes RunDLL32 avec un ShellExecute  
 De: Jean-Claude.Bell...@wanadoo.fr (Jean-Claude BELLAMY)
 Groupes: fr.comp.os.ms-windows.programmation
 Organisation: les newsgroups par Orange
 Date: 29. Apr 2008, 17:21:41
 References: 1 2 3
"WonderMan" <none@none.com> a écrit dans le message de 
news:mn.eb547d842adb560f.88081@none.com...
> [...]
> Bon, et bien je viens d'essayer :
>
> RUNDLL32.EXE SHELL32.DLL,Control_RunDLL desk.cpl,,0
>
> tiré de la page : http://vlaurie.com/computers2/Articles/rundll32.htm
> Ca marche en passant par la commande Executer de Windows, mais toujours 
> pas avec ShellExecute.
>
> Je ne vois toujours pas quelle est la syntaxe à utiliser ?

Rundll32  charge et exécute dynamiquement CERTAINES DLL qui doivent répondre 
à certains CRITÈRES .
De plus, la SYNTAXE d'exécution de "rundll32" est TRÈS STRICTE .

SYNTAXE
=======
    RUNDLL32.EXE <nom_de_dll>,<point_d_entree> <arguments optionels>

1)nom_de_dll
------------ 
Comporte ou non le chemin complet de la DLL
(tout dépend de sa localisation, si son répertoire fait partie ou non de la 
variable d'environnement PATH)

ATTENTION : pour éviter tout pb, ce nom doit être le NOM COURT !!!
Aucun espace ou caractère "folklo" n'est autorisé !
p.ex. , si on veut appeller la DLL suivante
   D:\Program Files\Microsoft Office\Office\autoclip.dll
il faudra taper (p.ex.) :
   rundll32 d:\PROGRA~1\MICROS~1\OFFICE\autoclip.dll,ACBeginSearch

2)La VIRGULE
------------ 
Placée entre le nom de la dll et le point d'entrée, elle est TRES 
IMPORTANTE.
Elle doit être "collée" entre eux, sans aucun espace.

3)Le point d'entrée
------------------- 
C'est le nom de la fonction appelée dans la DLL.
(Application Programming Interface)

Prototype de cette fonction :
void CALLBACK
  point_d_entree(HWND hwnd, HINSTANCE hinst, LPSTR lpszCmdLine, int 
nCmdShow);

NB: sous NT, le "point_d_entree" pourra être double :
- un suivi de "W", (UNICODE)
- un suivi de "A",  (ANSI)

Paramètres du point d'entrée de la DLL
======================================
hwnd :
    handle de fenêtre propriétaire des autres fenêtres de la DLL
hinst :
    handle d'instance de la DLL
lpszCmdLine :
    chaine ASCIIZ de paramètres
nCmdShow :
    flag d'affichage de la fenêtre éventuellement affichée
        0 = cachée
        1 = normal
        2 = iconifiée
        3 = maximale
        ...

Exemple :
   RUNDLL.EXE SETUPX.DLL,InstallHinfSection 132 C:\WINDOWS\INF\SHELL.INF

-> Rundll appelle l'API "InstallHinfSection()" de "Setupx.dll" et lui passe 
les parametres suivants :

     hwnd =
        handle de la fenêtre dans laquelle on exécute RUNDDL
    hinst =
        HINSTANCE de SETUPX.DLL
    lpszCmdLine =
        "132 C:\WINDOWS\INF\SHELL.INF"
    nCmdShow =
        (par défaut : normal)

Exemples pratiques
==================

- Lancement direct d'un module du panneau de config
    rundll32 shell32.dll,Control_RunDLL,tweakui.cpl

    Là il y a un double lancement !
    On exécute shell32.dll, en utilisant l'API "Control_RunDLL", auquel on 
indique de charger le module de config de "TweakUI" (des powertoys)

- Lancement d'une connexion à distance :
    rundll rnaui.dll,RnaDial Free
    dans cet exemple, "Free" est le nom de la connexion à distance

- Création d'un raccourci permettant de quitter Windows rapidement :
    rundll32 user32.dll,ExitWindowsEx

    ATTENTION! ici "case sensitive" !.
    Taper exactement "ExitWindowsEx"  et non "exitwindowsex"

- Affichage du panneau "Supprimer le périphérique en toute sécurité"
    (USB et/ou PCMCIA)
    rundll32.exe shell32.dll,Control_RunDLL  hotplug.dll

- Aspect du menu Démarrer :
    rundll32.exe shell32.dll,Options_RunDLL 1

- Affichage d'un raccourci Internet :
    rundll32.exe shdocvw.dll,OpenURL "nom-du-raccourci"

- Ouvrir un fichier zip et présenter le résultat du
  dézippage sous la forme d'un dossier :
    rundll32.exe zipfldr.dll,RouteTheCall "nom-du fichier-zip"

- Installation d'un fichier .INF :
    rundll32.exe setupapi,InstallHinfSection DefaultInstall 132 "nom-du 
fichier-inf"

- Définition d'une imprimante réseau comme imprimante par défaut :
    rundll32.exe printui.dll,PrintUIEntry /n \\serveur\imp_partagée /y

- Création d'un raccourci dans un dossier :
    rundll32.exe appwiz.cpl,NewLinkHere "nom-du-dossier"

- Verrouiller une station :
    rundll32 user32.dll,LockWorkStation


En ce qui concerne les "applets" du panneau de config, on peut utiliser 
RUNDLL32, mais franchement, il est beaucoup plus SIMPLE de les appeler
DIRECTEMENT !
Lorsqu'une applet a plusieurs fonctions, on peut en sélectionner une par un 
nombre tapé à la suite du nom de l'applet :

Lancement direct du panneau de config "souris" :
    rundll32 shell32.dll,Control_RunDLL main.cpl,@0
ou (plus simple) :
    main.cpl @0

Lancement direct du panneau de config "clavier" :
    rundll32 shell32.dll,Control_RunDLL main.cpl,@1
ou (plus simple) :
    main.cpl @1

Là aussi, si on précise un nombre après l'index, cela désigne le n° 
d'onglet!
    main.cpl @1,0
        => clavier (vitesse)
    main.cpl @1,1
        => clavier (paramètres régionaux)
    main.cpl @1,2
        => clavier (matériel)

Attention :
ce n° d'onglet n'est pris en compte que pour les panneaux "standards"
(p.ex. ça ne marche pas avec le panneau de config souris Logitech)

Autres exemples :
----------------- 
"options d'alimentation"
    powercfg.cpl

"ajout/suppression de programmes"
    appwiz.cpl

"ajout de matériel"
    hdwwiz.cpl

"Gestion ODBC"
    odbccp32.cpl

"Propriétés son"
    mmsys.cpl

"Contrôle joystick"
    joy.cpl

"Date et heure"
    timedate.cpl

"Accessibilité"
    access.cpl

"Connexions réseau"
    ncpa.cpl




--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP]
http://www.bellamyjc.org  ou http://jc.bellamy.free.fr


DateSujet  Auteur
29.04.
* Appeler les commande
WonderMan
29.04.
`* Re: Appeler les commande
jerome
29.04.
 `* Re: Appeler les commande
WonderMan
29.04.
  +- Re: Appeler les commande
Christian ASTOR
29.04.
  `*   Re: Appeler les commande
Jean-Claude BELLAMY
29.04.
   `- Re: Appeler les commande
WonderMan
Groups Explorer contact votre avis comment ça marche? rechercher un groupe suggérer un groupe abuse accueil du site   Imprimer cette page   Envoyer cette page à un(e) ami(e)