ATOUTFOX
COMMUNAUTÉ FRANCOPHONE DES PROFESSIONNELS FOXPRO
Visual FoxPro : le développement durable

SCRIPTS WMI SOUS VFP6.0 1ERE EDITION   



L'auteur

ybenam
Algérie Algérie
Membre Simple
# 0000002080
enregistré le 21/04/2008


Fiche personnelle


Note des membres
pas de note

Contributions > 09 - Automation > WMI (Windows Management Instrumentation)

SCRIPTS WMI SOUS VFP6.0 1ERE EDITION
# 0000000597
ajouté le 03/06/2008 03:54:34 et modifié le 03/06/2008
consulté 8010 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
wait window ("P a t i e n t e z......................!"at srows()/2,scols()/2 nowait
********************************************************
set textmerge on to &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 "
******************************************"

i=1
aa="
"
For Each objItem in colItems
bfile.Writeline i
i=i+1
bfile.Writeline "
File Name" & objItem.FileName
bfile.Writeline strCreationDate = WMIDateStringToDate(objItem.CreationDate)
bfile.Writeline "
Creation Date" & strCreationDate
bfile.Writeline "
Drive: " & objItem.Drive
bfile.Writeline "
Eight Dot Three File Name" & objItem.EightDotThreeFileName
bfile.Writeline "
Extension: " & objItem.Extension
bfile.Writeline "
File Size" & objItem.FileSize
bfile.Writeline "
File Type" & objItem.FileType
bfile.Writeline "
File System Name" & objItem.FSName
bfile.Writeline "
Hidden" & objItem.Hidden
bfile.Writeline strLastAccessed = WMIDateStringToDate(objItem.LastAccessed)
bfile.Writeline "
Last Accessed: " & strLastAccessed
strLastModified = WMIDateStringToDate(objItem.LastModified)
bfile.Writeline "
Last Modified: " & strLastModified
bfile.Writeline "
Name" & objItem.Name
bfile.Writeline "
Path" & objItem.Path
bfile.Writeline "
Target" & objItem.Target
bfile.Writeline "
**************************" &chr(10)
Next

bfile.Close


Function WMIDateStringToDate(dtmDate)
WMIDateStringToDate = CDate(Mid(dtmDate, 5, 2) & "
/" & Mid(dtmDate, 7, 2) & "/" & Left(dtmDate, 4) & " " & Mid (dtmDate, 9, 2) & ":" & Mid(dtmDate, 11, 2) & ":" & Mid(dtmDate, 13, 2))
End Function
endtext
set textmerge to
************************************************
WshShell = CreateObject("
WScript.Shell")
= WshShell.Run(afile, 1, .t.) &&bloque le processus d'éxécution du fichier VBS jusqu'à son terme

t1=seconds()
tcalcul=allt(str(t1-t0))+"
 sec"

MESSAGEBOX("
Terminé !"+chr(13)+"Votre PC a réalisé un temps de calcul="+tcalcul)

run/n "
notepad" c:\tempor.txt &&ouverture fichier texte

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 !!


Publicité

Les pubs en cours :

www.atoutfox.org - Site de la Communauté Francophone des Professionnels FoxPro - v3.4.0 - © 2004-2024.
Cette page est générée par un composant COM+ développé en Visual FoxPro 9.0-SP2-HF3