以下代码在 Windows 资源管理器文件夹中选择 arg1:
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
您为参数传递了 17 的值标志位。该值是一个整数,代表您想要设置的标志的组合。
OR
您可以使用标志值通过按位运算得出此值。我认为 17 可能是16 OR 1
(给予项目焦点;选择项目)标志值为 4 表示“取消选择除指定项目之外的所有项目。” 17 OR 4
= 21。
用于OR
组合标志;用于AND
测试特定标志是否已设置 (21 AND 4 = 4);用于AND not
关闭一个标志 (21 AND not(4) = 17)