VBS: Bir klasördeki bir dosyayı seçin


1

Aşağıdaki kod, bir Windows Gezgini klasöründeki arg1'i seçer:

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

Klasörde A dosyası zaten seçilmişse ve B dosyası arg1 olarak geçirilirse, her iki dosya da seçilir.

FileA'nın seçilmediğini ve yalnızca fileB'nin seçilmesini nasıl sağlayabilirim? Yorumlanan satır objShell.SendKeys("^a{F5}")geçici bir çözümdür, ancak daha iyi bir yol olmalı.

Teşekkür ederim.

Yanıtlar:


2

DwFlags parametresi için 17 değerini iletirsiniz . Bu değer, ayarlamak istediğiniz bayrak kombinasyonunu temsil eden bir tam sayıdır.

ORBayrak değerlerini kullanarak bu değeri bitsel bir işlemle türetirsiniz . Bence 17 muhtemelen 16 OR 1(madde odağını verin; öğeyi seçin) "Belirtilen öğenin dışındaki tüm öğelerin seçimini kaldırmak" için 4 olan bir bayrak değeri var. 17 OR 4= 21.

ORBayrakları birleştirmek için kullanın ; kullanımı ANDbu ayarlanmış olup olmadığını görmek için, belirli bir bayrak karşı test etmek için (21 ve 4 = 4); AND notbir bayrağını kapatmak için kullanın (21 VE değil (4) = 17)

SelectItem Belgeleri

random link: Stackoverflow - Tamsayılı bayraklar nasıl çalışır?


Not: bayraklar onları ikili olarak düşünürseniz daha mantıklıdır ve daha sonra ikilinin bir değiştirme anahtarının bir bankası ile aynı olduğunu düşünür. Yani "8" 1000 veya On-Off-Off-Off'dur.
Yorik

Mükemmel. Çok teşekkür ederim. 21tıkır tıkır çalışıyor.
Yaron

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.