Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Открыть папку в развёрнутом виде

296
14 апреля 2008 года
Virtuoso
331 / / 31.07.2005
Visual Basic 6.0

Здравствуйте!
У меня простой вопрос. Если - Dim p As New Shell, то ...
1) Как осуществить 'p.Explore ("C:\")' принудительно в развёрнутом виде?
2) Как осуществить 'p.Explore ("C:\")' без отображения (в открывшемся окне) слева дерева папок?
Спасибо!
296
14 апреля 2008 года
Virtuoso
331 / / 31.07.2005
Ну допустим открыть без дерева папок можно так:
 
Код:
Dim p
    Set p = CreateObject("Wscript.Shell")
    p.Run "C:\"

Только вот как этот метод научить понимать пробелы в пути к папке или файлу?

И как заставить открывать в развёрнутом виде?
275
14 апреля 2008 года
pashulka
985 / / 19.09.2004
 
Код:
With CreateObject("Wscript.Shell")
     .Run """C:\Мои документы"""

     .Run "C:\", 3 'WshMaximizedFocus
End With
296
15 апреля 2008 года
Virtuoso
331 / / 31.07.2005
О. Спасибо!
296
15 апреля 2008 года
Virtuoso
331 / / 31.07.2005
Возникла новая проблема. Как быть если путь заранее не известен, поэтому он сначала "узнаётся" и заносится в переменную?
 
Код:
Dim a As String
a = "C:\Мои документы"
With CreateObject("Wscript.Shell")
     .Run a 'ошибка
     .Run ""a"" 'ошибка
End With

Как открыть через переменную? Даже чёрт с ним с этим развёртыванием, хотя бы чтобы дерева слева не было.
275
15 апреля 2008 года
pashulka
985 / / 19.09.2004
 
Код:
iPath$ = "C:\Мои документы"

If InStr(iPath$, " ") > 0 Then iPath$ = """" & iPath$ & """"
'If InStr(iPath$, Chr(32)) > 0 Then iPath$ = Chr(34) & iPath$ & Chr(34)

CreateObject("Wscript.Shell").Run iPath$, 3 'WshMaximizedFocus


А если послать развёртывание к чёрту, то :

 
Код:
Dim iPath As Variant

iPath = "C:\Мои документы"

CreateObject("Shell.Application").Open iPath


или

 
Код:
Dim iPath As String

iPath = "C:\Мои документы"

CreateObject("Shell.Application").Open CVar(iPath)


P.S. При желании вместо позднего связывания Вы можете использовать ранее связывание (см. свой первый вопрос-пример)
296
16 апреля 2008 года
Virtuoso
331 / / 31.07.2005
Спасибо!
17K
16 апреля 2008 года
HookEst
144 / / 27.03.2008
тот же результат, только с использованием ShellExecute:
 
Код:
Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Function ShellRun(ByVal fname As String) As Boolean
    ShellRun = 32 < ShellExecute(0&, "open", fname, "", "", 3)
End Function

Sub t()
  if not ShellRun("c:\Documents and Settings\Я\Мои документы") then msgbox "Failed!"
End Sub

если использовать verb не open, а explore, то откроется с деревом
275
16 апреля 2008 года
pashulka
985 / / 19.09.2004
Если отойти от первоначального варианта, то тогда достаточно и VB функции - Shell

 
Код:
iPath$ = "C:\Мои документы"

Shell "Explorer " & iPath$, vbMaximizedFocus
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог