Les exemples d'utilisation de l'objet "Folder" récupéré par cette
fonction utilisent systématiquement divers détours pour obtenir
l'objet "FolderItem" Associé :
Passage par le Parent puis on reprend l'item dans la collection des
FolderItems du parent
Set ShApp = Wscript.CreateObject("shell.application")
Set ObjetFolder = ShApp.BrowseForFolder(H, Titre, F, [R])
Set Choix = ObjetFolder.Self
retourne le "FolderItem" correspondant à la sélection
Ensuite on dispose entre autres de
Choix.Path et Choix.Name , bien connus
mais aussi de deux booléens
Choix.IsRootFolder qui peut s'avérer utile...
de
Choix.Drive qui retourne un Objet Drive (comme avec le FSO )
et
Choix.IsFileSystem qui indique si ce "FolderItem" est dans le
"Systeme de fichier"
qui permet donc facilement d'écarter les divers trucs virtuels
du genre "EntireNetwork" ou "Poste de Travail "
Visiblement, j'ai fait plusieurs tests, ces possibilités existent...
Pourquoi ne sont-elles documentées nulle part ???
Y aurait-il des risques particuliers ( peste bubonique de l'écran,
Coryza du disque dur, etc ) attachés à l'utilisation de ces outils ???
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Gilles LAURENT
"moi" a écrit dans le message de news: | Bonjour,
Bonjour,
| Les exemples d'utilisation de l'objet "Folder" récupéré par cette | fonction utilisent systématiquement divers détours pour obtenir | l'objet "FolderItem" Associé : | | Chemin = Resultat.ParentFolder.ParseName(Resultat.Title).Path
Cette technique est utilisée sur les systèmes antérieur à Windows 2000 / Windows 98ME. C'est le seul moyen de récupérer le chemin du dossier sélectionné sous ces systèmes.
| Set ShApp = Wscript.CreateObject("shell.application") | Set ObjetFolder = ShApp.BrowseForFolder(H, Titre, F, [R]) | Set Choix = ObjetFolder.Self | | retourne le "FolderItem" correspondant à la sélection
En effet, la propriété Self est maintenant disponible ce qui simplifie les choses
| Ensuite on dispose entre autres de | Choix.Path et Choix.Name , bien connus | mais aussi de deux booléens | Choix.IsRootFolder qui peut s'avérer utile...
?? Choix.IsFolder
| Choix.Drive qui retourne un Objet Drive (comme avec le FSO )
??
| Choix.IsFileSystem qui indique si ce "FolderItem" est dans le | "Systeme de fichier" | qui permet donc facilement d'écarter les divers trucs virtuels | du genre "EntireNetwork" ou "Poste de Travail "
Ci-dessous un transcript WSH Shell qui expose les membres (méthodes et propriétés) de l'objet FolderItem :
******************************* WSH Transcript Start Start time : 2007-01-14 17:28:17 Username : LA77028Administrateur Machine : LA77028 (Microsoft Windows NT 5.1.2600.1) ******************************* Transcript started, output file is browseforfolder.txt
WSH D:test> Set oShApp=co("Shell.Application") WSH D:test> ' sélection du dossier D:test WSH D:test> ' on récupère un objet FolderItem WSH D:test> Set oFolder=oShApp.BrowseForFolder(hwnd, "", 0).Self WSH D:test> echo TypeName (oFolder) FolderItem2 WSH D:test> ' lecture des membres de l'objet WSH D:test> gm(oFolder) Function ExtendedProperty (bstrPropName) Function InvokeVerb ([vVerb]) Function InvokeVerbEx ([vVerb], [vArgs]) Function Verbs () Property Application Property GetFolder Property GetLink Property IsBrowsable Property IsFileSystem Property IsFolder Property IsLink Property ModifyDate Property Name Property Parent Property Path Property Size Property Type WSH D:test> ' lecture des propriétés de l'objet WSH D:test> echo oFolder.Path D:test WSH D:test> echo oFolder.IsBrowsable 0 WSH D:test> echo oFolder.IsFileSystem -1 WSH D:test> echo oFolder.IsFolder -1 WSH D:test> echo oFolder.IsLink 0 WSH D:test> echo oFolder.Modifydate 14/01/2007 16:38:18 WSH D:test> echo oFolder.Parent Donnees (D:) WSH D:test> echo oFolder.Name test WSH D:test> echo oFolder.Size 0 WSH D:test> echo oFolder.Type Dossier de fichiers WSH D:test>
Transcript stopped.
| Visiblement, j'ai fait plusieurs tests, ces possibilités existent... | Pourquoi ne sont-elles documentées nulle part ???
L'objet FolderItem est documenté ici : http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/objects/folderitem/folderitem.asp
-- Gilles LAURENT http://glsft.free.fr
"moi" <moi@pas.la.ici> a écrit dans le message de
news:edvFMk1NHHA.5104@TK2MSFTNGP06.phx.gbl
| Bonjour,
Bonjour,
| Les exemples d'utilisation de l'objet "Folder" récupéré par cette
| fonction utilisent systématiquement divers détours pour obtenir
| l'objet "FolderItem" Associé :
|
| Chemin = Resultat.ParentFolder.ParseName(Resultat.Title).Path
Cette technique est utilisée sur les systèmes antérieur à Windows 2000 /
Windows 98ME. C'est le seul moyen de récupérer le chemin du dossier
sélectionné sous ces systèmes.
| Set ShApp = Wscript.CreateObject("shell.application")
| Set ObjetFolder = ShApp.BrowseForFolder(H, Titre, F, [R])
| Set Choix = ObjetFolder.Self
|
| retourne le "FolderItem" correspondant à la sélection
En effet, la propriété Self est maintenant disponible ce qui simplifie
les choses
| Ensuite on dispose entre autres de
| Choix.Path et Choix.Name , bien connus
| mais aussi de deux booléens
| Choix.IsRootFolder qui peut s'avérer utile...
??
Choix.IsFolder
| Choix.Drive qui retourne un Objet Drive (comme avec le FSO )
??
| Choix.IsFileSystem qui indique si ce "FolderItem" est dans le
| "Systeme de fichier"
| qui permet donc facilement d'écarter les divers trucs virtuels
| du genre "EntireNetwork" ou "Poste de Travail "
Ci-dessous un transcript WSH Shell qui expose les membres (méthodes et
propriétés) de l'objet FolderItem :
*******************************
WSH Transcript Start
Start time : 2007-01-14 17:28:17
Username : LA77028Administrateur
Machine : LA77028 (Microsoft Windows NT 5.1.2600.1)
*******************************
Transcript started, output file is browseforfolder.txt
WSH D:test> Set oShApp=co("Shell.Application")
WSH D:test> ' sélection du dossier D:test
WSH D:test> ' on récupère un objet FolderItem
WSH D:test> Set oFolder=oShApp.BrowseForFolder(hwnd, "", 0).Self
WSH D:test> echo TypeName (oFolder)
FolderItem2
WSH D:test> ' lecture des membres de l'objet
WSH D:test> gm(oFolder)
Function ExtendedProperty (bstrPropName)
Function InvokeVerb ([vVerb])
Function InvokeVerbEx ([vVerb], [vArgs])
Function Verbs ()
Property Application
Property GetFolder
Property GetLink
Property IsBrowsable
Property IsFileSystem
Property IsFolder
Property IsLink
Property ModifyDate
Property Name
Property Parent
Property Path
Property Size
Property Type
WSH D:test> ' lecture des propriétés de l'objet
WSH D:test> echo oFolder.Path
D:test
WSH D:test> echo oFolder.IsBrowsable
0
WSH D:test> echo oFolder.IsFileSystem
-1
WSH D:test> echo oFolder.IsFolder
-1
WSH D:test> echo oFolder.IsLink
0
WSH D:test> echo oFolder.Modifydate
14/01/2007 16:38:18
WSH D:test> echo oFolder.Parent
Donnees (D:)
WSH D:test> echo oFolder.Name
test
WSH D:test> echo oFolder.Size
0
WSH D:test> echo oFolder.Type
Dossier de fichiers
WSH D:test>
Transcript stopped.
| Visiblement, j'ai fait plusieurs tests, ces possibilités existent...
| Pourquoi ne sont-elles documentées nulle part ???
L'objet FolderItem est documenté ici :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/objects/folderitem/folderitem.asp
| Les exemples d'utilisation de l'objet "Folder" récupéré par cette | fonction utilisent systématiquement divers détours pour obtenir | l'objet "FolderItem" Associé : | | Chemin = Resultat.ParentFolder.ParseName(Resultat.Title).Path
Cette technique est utilisée sur les systèmes antérieur à Windows 2000 / Windows 98ME. C'est le seul moyen de récupérer le chemin du dossier sélectionné sous ces systèmes.
| Set ShApp = Wscript.CreateObject("shell.application") | Set ObjetFolder = ShApp.BrowseForFolder(H, Titre, F, [R]) | Set Choix = ObjetFolder.Self | | retourne le "FolderItem" correspondant à la sélection
En effet, la propriété Self est maintenant disponible ce qui simplifie les choses
| Ensuite on dispose entre autres de | Choix.Path et Choix.Name , bien connus | mais aussi de deux booléens | Choix.IsRootFolder qui peut s'avérer utile...
?? Choix.IsFolder
| Choix.Drive qui retourne un Objet Drive (comme avec le FSO )
??
| Choix.IsFileSystem qui indique si ce "FolderItem" est dans le | "Systeme de fichier" | qui permet donc facilement d'écarter les divers trucs virtuels | du genre "EntireNetwork" ou "Poste de Travail "
Ci-dessous un transcript WSH Shell qui expose les membres (méthodes et propriétés) de l'objet FolderItem :
******************************* WSH Transcript Start Start time : 2007-01-14 17:28:17 Username : LA77028Administrateur Machine : LA77028 (Microsoft Windows NT 5.1.2600.1) ******************************* Transcript started, output file is browseforfolder.txt
WSH D:test> Set oShApp=co("Shell.Application") WSH D:test> ' sélection du dossier D:test WSH D:test> ' on récupère un objet FolderItem WSH D:test> Set oFolder=oShApp.BrowseForFolder(hwnd, "", 0).Self WSH D:test> echo TypeName (oFolder) FolderItem2 WSH D:test> ' lecture des membres de l'objet WSH D:test> gm(oFolder) Function ExtendedProperty (bstrPropName) Function InvokeVerb ([vVerb]) Function InvokeVerbEx ([vVerb], [vArgs]) Function Verbs () Property Application Property GetFolder Property GetLink Property IsBrowsable Property IsFileSystem Property IsFolder Property IsLink Property ModifyDate Property Name Property Parent Property Path Property Size Property Type WSH D:test> ' lecture des propriétés de l'objet WSH D:test> echo oFolder.Path D:test WSH D:test> echo oFolder.IsBrowsable 0 WSH D:test> echo oFolder.IsFileSystem -1 WSH D:test> echo oFolder.IsFolder -1 WSH D:test> echo oFolder.IsLink 0 WSH D:test> echo oFolder.Modifydate 14/01/2007 16:38:18 WSH D:test> echo oFolder.Parent Donnees (D:) WSH D:test> echo oFolder.Name test WSH D:test> echo oFolder.Size 0 WSH D:test> echo oFolder.Type Dossier de fichiers WSH D:test>
Transcript stopped.
| Visiblement, j'ai fait plusieurs tests, ces possibilités existent... | Pourquoi ne sont-elles documentées nulle part ???
L'objet FolderItem est documenté ici : http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/objects/folderitem/folderitem.asp
-- Gilles LAURENT http://glsft.free.fr
moi
Bonjour,
Notre ami Gilles LAURENT tapota :
Cette technique est utilisée sur les systèmes antérieur à Windows 2000 / Windows 98ME. C'est le seul moyen de récupérer le chemin du dossier sélectionné sous ces systèmes.
OK, Comme on trouve cette technique dans de nombreux scripts proposés pour XP, je pensais qu'il y avait une autre raison...
Effectivement, dans msdn2 ( voir plus bas) j'ai finis par trouver que ça marchait à partir de W2000 et WinMe ( donc pas sur 98SE qui reste encore assez "fréquent" à certains endroits)
N'empêche que Parent n'existe pas forcément Il faut alors chercher un contenu et faire "le contraire" : si Choix.items.count > 0 on tronque Choix.items.item(0).path pour retrouver le chemin de l'élément choisi ...
Dans les deux cas, c'est assez indirect :o(
Mézalor : Peut-on rencontrer un objet sans Parent ni Items() mais sélectionnable avec BrowsForFolder ?
doit-on prévoir ce cas ...
Choix.IsRootFolder qui peut s'avérer utile...
Oups, je me suis planté, En fait, c'est en passant par un Objet FSO que j'ai récupéré cette info...
set FsoFolder = FSO.GetFolder(Choix.Path) EstRacine = FsoFolder.IsRootFolder
mais les contenus semblent identiques :o) Le seul avantage c'est que l'adresse n'est pas coupée par le retour de ligne :o)))
Merci, en tout cas, pour ces précisions,
Amicalement,
HB
Bonjour,
Notre ami Gilles LAURENT tapota :
Cette technique est utilisée sur les systèmes antérieur à Windows
2000 / Windows 98ME. C'est le seul moyen de récupérer le chemin du
dossier sélectionné sous ces systèmes.
OK, Comme on trouve cette technique
dans de nombreux scripts proposés pour XP,
je pensais qu'il y avait une autre raison...
Effectivement, dans msdn2 ( voir plus bas)
j'ai finis par trouver que ça marchait à partir
de W2000 et WinMe
( donc pas sur 98SE
qui reste encore assez "fréquent" à certains endroits)
N'empêche que Parent n'existe pas forcément
Il faut alors chercher un contenu et faire "le contraire" :
si Choix.items.count > 0
on tronque Choix.items.item(0).path
pour retrouver le chemin de l'élément choisi ...
Dans les deux cas, c'est assez indirect :o(
Mézalor :
Peut-on rencontrer un objet
sans Parent ni Items()
mais sélectionnable avec BrowsForFolder ?
doit-on prévoir ce cas ...
Choix.IsRootFolder qui peut s'avérer utile...
Oups, je me suis planté,
En fait, c'est en passant par un Objet FSO
que j'ai récupéré cette info...
set FsoFolder = FSO.GetFolder(Choix.Path)
EstRacine = FsoFolder.IsRootFolder
Cette technique est utilisée sur les systèmes antérieur à Windows 2000 / Windows 98ME. C'est le seul moyen de récupérer le chemin du dossier sélectionné sous ces systèmes.
OK, Comme on trouve cette technique dans de nombreux scripts proposés pour XP, je pensais qu'il y avait une autre raison...
Effectivement, dans msdn2 ( voir plus bas) j'ai finis par trouver que ça marchait à partir de W2000 et WinMe ( donc pas sur 98SE qui reste encore assez "fréquent" à certains endroits)
N'empêche que Parent n'existe pas forcément Il faut alors chercher un contenu et faire "le contraire" : si Choix.items.count > 0 on tronque Choix.items.item(0).path pour retrouver le chemin de l'élément choisi ...
Dans les deux cas, c'est assez indirect :o(
Mézalor : Peut-on rencontrer un objet sans Parent ni Items() mais sélectionnable avec BrowsForFolder ?
doit-on prévoir ce cas ...
Choix.IsRootFolder qui peut s'avérer utile...
Oups, je me suis planté, En fait, c'est en passant par un Objet FSO que j'ai récupéré cette info...
set FsoFolder = FSO.GetFolder(Choix.Path) EstRacine = FsoFolder.IsRootFolder