' ---------------------------------------------------------- ' Script d'exploration des icônes contenues dans un fichier ' affichage du n° de l'icône sélectionnée. ' ' Le contrrôle activeX "JCB.OCX" est nécessaire ' ' JC BELLAMY © 2005 ' ---------------------------------------------------------- Const SW_SHOWNORMAL=1 Set args = Wscript.Arguments set fso = wscript.CreateObject("Scripting.FileSystemObject") Set shell = WScript.CreateObject("WScript.Shell") nbargs=args.count TestHost true jcbCOM="jcb.tools" TestCOMExists jcbCOM,"jcb.ocx" set jcbtool = wscript.CreateObject(jcbCOM,"") do Initfile=shell.ExpandEnvironmentStrings("%systemroot%\system32\*.dll") Filtre="Icône(*.ico)|*.ico|Bibliothèque(*.dll)|*.dll|Exécutable(*.exe)|*.exe|Tout fichier(*.*)|*.*" defExt="dll" Title="Recherche d'icône" iconfile=trim(jcbtool.OpenFile(Initfile,Filtre,defExt,Title)) If iconfile<>"" Then If not fso.FileExists(iconfile) Then wscript.echo "Fichier " & iconfile & " inexistant" wscript.quit End If wscript.echo "Fichier " & iconfile do selectedicon = jcbtool.PickIcon(iconfile) if selectedicon <> "" then p=instr(selectedicon,",") If p>0 Then iconfile=left(selectedicon,p-1) iconnumber=mid(selectedicon,p+1) wscript.echo "Icône choisie n° " & iconnumber end if end If loop until selectedicon= "" end if loop until iconfile="" wscript.quit '-------------------------------------------------------------------- 'Sous-programme de test du moteur 'Vu les sorties générées, c'est CSCRIPT (et non pas WSCRIPT) 'qui doit être utilisé de préférence Sub TestHost(force) dim rep strappli=lcase(Wscript.ScriptFullName) strFullName =lcase(WScript.FullName) i=InStr(1,strFullName,".exe",1) j=InStrRev(strFullName,"\",i,1) strCommand=Mid(strFullName,j+1,i-j-1) if strCommand<>"cscript" then If force then Init="Ce script doit être lancé avec CSCRIPT" Else Init="Il est préférable de lancer ce script avec CSCRIPT" End If rep=MsgBox(Init & VBCRLF & _ "Cela peut être rendu permanent avec la commande" & VBCRLF & _ "cscript //H:CScript //S /Nologo" & VBCRLF & _ "Voulez-vous que ce soit fait automatiquement?", _ vbYesNo + vbQuestion,strappli) if rep=vbYes then nomcmd="setscript.bat" Set ficcmd = fso.CreateTextFile(nomcmd) ficcmd.writeline "@echo off" ficcmd.writeline "cscript //H:CScript //S /Nologo" ficcmd.writeline "pause" params="" For i = 0 To nbargs-1 params=params & " " & args(i) next ficcmd.writeline chr(34) & strappli & chr(34) & params ficcmd.writeline "pause" ficcmd.close shell.Run nomcmd, SW_SHOWNORMAL,true force=true end if If force then WScript.Quit end if end sub '-------------------------------------------------------------------- Sub TestCOMExists(name,module) ' Vérification d'installation d'un objet COM on error resume next clef="HKCR\" & name & "\" dummy = shell.RegRead(Clef) if err.number<>0 then ' contrôle ActiveX non enregistré pathmodule=getpath()& module If not fso.fileExists(pathmodule) Then Mess = "Le contrôle ActiveX " & name & " est requis." & VBCRLF Mess=Mess & "Il est contenu dans le fichier " & module & VBCRLF Mess=Mess & "Or ce fichier n'a pas été trouvé." & VBCRLF Mess=Mess & "Veuillez réinstaller le logiciel IconFolder" MsgBox Mess, vbOKOnly + vbExclamation wscript.quit End If err.clear shell.Run "regsvr32.exe " & quote & pathmodule & quote, SW_SHOWNORMAL,true dummy = shell.RegRead("HKCR\" & name & "\") if err.number<>0 then Mess = "Le contrôle ActiveX " & name & " n'a pas pu être enregistré" MsgBox Mess, vbExclamation wscript.quit end if end if End Sub '--------------------------------------------------------------------