VBS: selecione um arquivo em uma pasta

1

O código a seguir seleciona arg1 em uma pasta do 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

Se fileA já estiver selecionado na pasta e fileB for passado como arg1, ambos os arquivos serão selecionados.

Como posso ter o arquivo desmarcado e somente o arquivo B selecionado? A linha comentada objShell.SendKeys("^a{F5}") é uma solução alternativa, mas deve haver uma maneira melhor.

Obrigado.

    
por Yaron 18.07.2017 / 06:48

1 resposta

2

Você passa o valor de 17 para o parâmetro dwFlags . Esse valor é um inteiro representando a combinação de sinalizadores que você deseja definir.

Você obtém este valor por meio de uma operação bitwise OR usando os valores de sinalizador. Eu acho que 17 é provavelmente 16 OR 1 (dê o item focus; selecione o item) Existe um valor de flag de 4 para "desmarcar todos menos o item especificado". 17 OR 4 = 21.

Use OR para combinar sinalizadores; use AND para testar contra um sinalizador específico para ver se está definido (21 AND 4 = 4); use AND not para ativar uma flag off (21 AND not (4) = 17)

Documentação do item de menu

link aleatório: Stackoverflow - Como funcionam os indicadores inteiros?

    
por 18.07.2017 / 23:36