VBS: Sélectionnez un fichier dans un dossier

1

Le code suivant sélectionne arg1 dans un dossier de l'Explorateur Windows:

Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run("""" & WScript.Arguments(0) & """")
WScript.Sleep 400

' objShell.SendKeys("^a{F5}")       ' Deslect All.

Set objShellAPP = CreateObject("Shell.Application")
On Error Resume Next        ' For new unsaved files.
With objShellAPP.Windows(objShellAPP.Windows.Count - 1).document
.SelectItem .Folder.Items.Item(WScript.Arguments(1)), 17
End With

Set objShell = Nothing
Set objShellAPP = Nothing

Si le fichier fileA est déjà sélectionné dans le dossier et que le fichier fileB est transmis en tant que arg1, les deux fichiers sont sélectionnés.

Comment puis-je avoir le fichier A désélectionné et uniquement le fichier B sélectionné? La ligne commentée objShell.SendKeys("^a{F5}")est une solution de contournement, mais il doit y avoir un meilleur moyen.

Je vous remercie.

Yaron
la source

Réponses:

2

Vous transmettez la valeur 17 pour le paramètre dwFlags . Cette valeur est un entier représentant la combinaison d'indicateurs que vous souhaitez définir.

Vous dérivez cette valeur par une ORopération au niveau du bit en utilisant les valeurs d'indicateur. Je pense que 17 est probablement 16 OR 1(donnez le focus à l’article; sélectionnez l’article) Il ya une valeur de drapeau de 4 pour "désélectionner tout sauf l’article spécifié". 17 OR 4= 21.

Utilisez ORpour combiner des drapeaux; utiliser ANDpour tester un drapeau particulier pour voir s'il est activé (21 AND 4 = 4); utiliser AND notpour désactiver un drapeau (21 AND not (4) = 17)

SelectItem Documentation

Lien aléatoire: Stackoverflow - Comment fonctionnent les indicateurs de nombres entiers?

Yorik
la source
Remarque: les indicateurs ont plus de sens si vous les considérez en binaire puis considérez que le binaire est analogue à une banque de commutateurs à bascule. Donc "8" est 1000 ou On-Off-Off-Off.
Yorik
Parfait. Merci beaucoup. 21fonctionne comme un charme.
Yaron