"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