SCRIPTS WMI SOUS VFP6.0 1ERE EDITION
# 0000000597
ajouté le 03/06/2008 03:54:34 et modifié le 03/06/2008
consulté 8285 fois
Niveau
initié
Version(s) Foxpro : VFP 6.0
Description
L'exécution des scripts WMI sous VFP est réservée actuellement aux versions de VFP>=7.
Sur les anciennes versions comme la mienne,un message d'erreur est renvoyé car
la fonction GetObject n'est pas prise en charge par le système VFP6.0.
Comment remédier à cet handicap ?
Sous VFP6.0,il y a une solution que j'utilise souvent car
ces scripts sont d'origine VBS language qui est directement exécutable sur la machine.
Recopier la source originale du script qui est en VBS entre des instructions text/endtext et
actionner set textmerge on to noshow
text
.......recopier le script complet WMI de vbs
endtext
set textmerge to
puis exécuter le fichier créé avec shellexecute par ex..
Vous auriez contourné le problème lié à votre version VFP6.0 et solutionné sans exception l'exécution
de tous les scripts WMI .
Je vous livre à titre d'exemple un script qui recense tous les raccourcis de votre ordinateur( script
dont le temps de calcul est assez long,je vous préviens -de l'ordre d'une minute chez moi-!)
cordialement benameuryousfi1@gmail.com
Code source :
afile="c:\tempor.vbs"&&fichier vbs à créer
clea
t0=seconds() set safe off _screen.windowstate=1 &&réduire vfp waitwindow ("P a t i e n t e z......................!") atsrows()/2,scols()/2 nowait ******************************************************** settextmergeonto &afile noshow
text 'Voici un script VBS qui vous affiche toutes les informations de chacun de vos racourcis bureau."
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_ShortcutFile")
Const ForReading = 1, ForWriting = 2
Dim fso,bfile
Set fso = CreateObject("Scripting.FileSystemObject")
Set bfile = fso.OpenTextFile("c:\tempor.txt", ForWriting, True)
bfile.Writeline " LISTE DE TOUS LES RACCOURCIS DE L'ORDINATEUR" &chr(10)
bfile.Writeline "Nombre de raccourcis =" & colItems.count
bfile.Writeline "******************************************"
if messagebox("Raser les fichiers créés?",4+64,"Nettoyage")=6
set safe off
dele file c:\tempor.vbs
dele file c:\tempor.txt
endi
Commentaires
le 03/06/2008, Jean à Grenoble a écrit : plus de 300 secondes pour 260 liens.
Il m'a fallu un moment pour comprendre les résultats, je m'attendai à avoir une liste des icônes de mon bureau et en fait on parcourt le disque à la recherche des .lnk
Dans le résultat (pour les moins vieux !) : Eight Dot Three File Name donne le nom 'DOS' du fichier au format 8.3 (8caractères, un point et 3 caractères
J'ai modifié la commande set textmerge on to comme suit :
set textmerge on to (afile) noshow
en effet l'utilisation de l'indirection (&) avec un texte qui contient un point m'a fait tiquer mais je n'ai pas vérifier.
le 03/06/2008, ybenam a écrit : Merci jean ,tu dois être bien matinal ! En fait j'utilise le "&" assez souvent dans mes programmes ,c'est comme la conduite auto on répète les gestes que l'on a appris avec le permis de conduire et diffiicle de les changer.En fait ..l'essentiel est que ça marche .... En fait si tu enlève l" "&" le fichier texte sera inscrit en tant que <afile.tx>t,ce qui n'est pas le fichier prescrit ! La description du programme (et la restitution) disent bien "tous les raccourcis de l'ordinateur" (le titre entre text/endtext qui parle de raccourcis bureau est à retoucher...merci! Sur ma machine j'ai recensé 532 raccourcis en 80secondes (Pentium 4 made in China !) .Est il est temps pour toi de changer de PC ?? je plaisante!
Salam ! Au revoir !
le 03/06/2008, Jean à Grenoble a écrit : le fait que afile soit entre parenthèse va conduire au même résultat que ton indirection mais sans l'éventuel problème du '.'
Sauf lorsque cela est impossible, il faut utiliser les () que le & ....
Salam alic !
PS pour le PC : je croyais que les machines fabriquées en Chine étaient ... bridées !!
plus de 300 secondes pour 260 liens.
Il m'a fallu un moment pour comprendre les résultats, je m'attendai à avoir une liste des icônes de mon bureau et en fait on parcourt le disque à la recherche des .lnk
Dans le résultat (pour les moins vieux !) : Eight Dot Three File Name donne le nom 'DOS' du fichier au format 8.3 (8caractères, un point et 3 caractères
J'ai modifié la commande set textmerge on to comme suit :
set textmerge on to (afile) noshow
en effet l'utilisation de l'indirection (&) avec un texte qui contient un point m'a fait tiquer mais je n'ai pas vérifier.