PDA

Показать полную графическую версию : закрыть все окна explorer с определенным закголовком


Опиум
12-04-2016, 13:21
написана давно прога на дельфях, но гибкости некоторой нет.
Открыто много окон explorer на разные папки, в т.ч.и на сетевыу "\\....."

Скрипт должен закрыть все окна, чей заголовок начинается? например с \\SERVER\.....

Kazun
12-04-2016, 13:32
PowerShell:
(New-Object -Com Shell.Application).Windows() | Where LocationUrl -like "*//Server/*" | Foreach Quit

Опиум
12-04-2016, 13:46
сорри, не уточнил... на wsh бы...

Iska
12-04-2016, 14:57
Option Explicit

Dim strPattern
Dim objWebBrowser


strPattern = "SERVER"

For Each objWebBrowser In WScript.CreateObject("Shell.Application").Windows
With objWebBrowser
If TypeName(.Document) = "IShellFolderViewDual2" Then
If StrComp(Left(.LocationURL, Len("file://" & strPattern)), "file://" & strPattern, vbTextCompare) = 0 Then
'WScript.Echo .LocationURL
.Quit
End If
End If
End With
Next

WScript.Quit 0

Опиум
12-04-2016, 15:16
Iska, я речь веду не про не про браузер, а про windows explorer...

Iska
12-04-2016, 15:46
Опиум, я тоже. Браузер — это «HTMLDocument», Проводник — «IShellFolderViewDual2».

Опиум
13-04-2016, 08:59
Iska, просто у меня твой скрипт не отработал почемуто. Плотно не разбирался.

Опиум
13-04-2016, 11:28
Цитата Iska:
Проводник — «IShellFolderViewDual2». »
а что тогда такое IShellFolderViewDual3 ?)

который у меня (поэтому твой скрипт и не аллё)

я заменил Left на конструкцию
Instr(TypeName(.Document),"IShellFolderViewDual")=1
и заработало.
Кстати. почему вы используете Left хотя Instr(....)=1 проще?

Iska
13-04-2016, 12:50
Проводник — «IShellFolderViewDual2». »
а что тогда такое IShellFolderViewDual3 ?)
который у меня (поэтому твой скрипт и не аллё) »
Опиум, у Вас какая ОС?

я заменил Left на конструкцию
Instr(TypeName(.Document),"IShellFolderViewDual")=1»
У меня нет там функции «Left()»:
If TypeName(.Document) = "IShellFolderViewDual2" Then »

Кстати. почему вы используете Left хотя Instr(....)=1 проще? »
Проще… и неправильно. Если речь про:
If StrComp(Left(.LocationURL, Len("file://" & strPattern)), "file://" & strPattern, vbTextCompare) = 0 Then »

Опиум
13-04-2016, 14:02
у Вас какая ОС? »
Microsoft Windows [Version 6.1.7601] w7 eng ent sp1

Проще… и неправильно. Если речь про: »
где может быть косяк?

Iska
13-04-2016, 14:12
где может быть косяк? »
Дабы не возникло расхождений (как выше), покажите Ваш полный код.

Опиум
14-04-2016, 08:53
Iska, Код ваш, я просто заменил left на instr

Option Explicit

Dim strPattern,s,c
Dim objWebBrowser


strPattern = ""
c=0

For Each objWebBrowser In WScript.CreateObject("Shell.Application").Windows
With objWebBrowser
'WScript.Echo TypeName(.Document)
'If TypeName(.Document) = "IShellFolderViewDual3" Then
If Instr(TypeName(.Document),"IShellFolderViewDual")=1 Then
'If StrComp(Left(.LocationURL, Len("file://" & strPattern)), "file://" & strPattern, vbTextCompare) = 0 Then
s=.LocationURL
'проверяем, если открыт сетевой ресурс \\****
If (Instr(s,"file://")=1) and (mid(s,8,1)<>"/")Then
'WScript.Echo .LocationURL
c=c+1
.Quit
End If
End If
End With
Next
WScript.Echo "Closed:" & c
WScript.Quit 0




© OSzone.net 2001-2012