1

Следующий код выбирает arg1 в папке Windows Explorer:

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

Если fileA уже выбран в папке и fileB передается как arg1, выбираются оба файла.

Как отменить выбор файла A и выбрать только файл B? Комментируемая строка objShell.SendKeys("^a{F5}") - это обходной путь, но должен быть лучший способ.

Спасибо.

1 ответ1

2

Вы передаете значение 17 для параметра dwFlags. Это значение является целым числом, представляющим комбинацию флагов, которые вы хотите установить.

Вы получаете это значение с помощью побитовой операции OR используя значения флага. Я думаю, что 17 - это, вероятно, 16 OR 1 (выделите элемент; выберите элемент). Имеется значение флага 4, чтобы «отменить выбор всего, кроме указанного элемента». 17 OR 4 = 21.

Используйте OR для объединения флагов; используйте AND для проверки определенного флага, чтобы увидеть, установлен ли он (21 AND 4 = 4); используйте AND not чтобы не выключать один флаг (21 AND not (4) = 17)

Выберите документацию

Случайная ссылка: Stackoverflow - Как работают целочисленные флаги?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .