1

Тема: Обзор папок на HTA (проблема с рабочим столом)

Формирую через HTA меню через которое можно выбрать папку, а потом что б все содержимое папки выдалось на форму. Все в принципе работает только вот в windows 7 есть такая проблема если выбираем рабочий стол, то начинают сыпаться ошибки (наверное потому что windows 7 использует относительные ссылки ) как можно что б при выборе рабочего стола отобразились все файлы, а не посыпались ошибки?

        sDinamicContent = sDinamicContent & "<Form Name=ChkBoxFrm>"

        Set objFolder = CreateObject("Shell.Application").BrowseForFolder(0, "Example", 0, "My Computer") 
        If objFolder Is Nothing Then
        MsgBox "No folder selected.",,MyTitle
        Else
        MsgBox objFolder.Items.Item.path
        asdf = objFolder.Items.Item.path
        End If
        Set objFolder = Nothing

        Set objNetwork = CreateObject("Wscript.Network")    
            Name_Login_Div.InnerHTML = "Логин пользователя: " & objNetwork.UserName
        MsgBox asdf 
            Set FSO = CreateObject("Scripting.FileSystemObject")
            Set Folder = FSO.GetFolder(asdf)
            Dim MyArray1
            
            For Each File In Folder.Files
        
            sDinamicContent = sDinamicContent & "<input style=""background-color:#00ff00"" name=""File.Name"" value=""File.Name"" type=""checkbox""/>" & File.Name & "<br>"

            MyArray1 = File.Name
            MsgBox MyArray1
        Next
            
        sDinamicContent = sDinamicContent & "<input style=""background-color:#00ff00"" name=""ChkBx1"" Checked value=""Box1"" type=""checkbox""/>" & "<br>"
        sDinamicContent = sDinamicContent & "<input style=""background-color:#ffff00"" name=""ChkBx2"" value=""Box2"" type=""checkbox""/>" & "<br>"
          sDinamicContent = sDinamicContent & "<input style=""background-color:#ff0000"" name=""ChkBx3"" value=""Box3"" type=""checkbox""/>" & "<br>"
        sDinamicContent = sDinamicContent & "<input type=""Button"" Value=""Check""  onclick=""CheckChkBx"" />" & "<br>"   
        sDinamicContent = sDinamicContent & "</Form>"

        sDinamicContent = sDinamicContent & "<div class=""NormalLink"" id=""TextFile_Notepad"" onclick=RunApplication(me.id) onmouseover=me.className='NormalLinkMouseOver' onmouseout=me.className='NormalLink'>- Открыть файл в блокноте</div>"
        sDinamicContent = sDinamicContent & "<div class=""NormalLink"" id=""TextFile_Form"" onclick=RunApplication(me.id) onmouseover=me.className='NormalLinkMouseOver' onmouseout=me.className='NormalLink'>- Отобразить здесь</div>"
        DynamicContent_Div.InnerHTML = sDinamicContent
            Else
               DynamicContent_Div.InnerHTML = "Файл не найден"
            End If

2

Re: Обзор папок на HTA (проблема с рабочим столом)

А через метод browseForFolder() объекта Shell.Application не проще?

3

Re: Обзор папок на HTA (проблема с рабочим столом)

        MsgBox objFolder.Items.Item.path
        asdf = objFolder.Items.Item.path

при выборе Рабочего стола даёт ошибку "Требуется объект: 'objFolder.Items.Item'".
Исправляется с помощью

asdf = objFolder.Self.path
Забыл пароль и потерял e-mail.

4

Re: Обзор папок на HTA (проблема с рабочим столом)

Там всё равно надо проверять на «Not … Is Nothing», на пустую строку и, наконец, на существование папки в файловой системе (дабы не наткнуться на какую-нибудь «Панель управления» или «Мои веб-узлы»).

5

Re: Обзор папок на HTA (проблема с рабочим столом)

alexii пишет:

Там всё равно надо проверять на «Not … Is Nothing»

Эта проверка в коде есть.

alexii пишет:

, на пустую строку

Разве?

alexii пишет:

и, наконец, на существование папки в файловой системе (дабы не наткнуться на какую-нибудь «Панель управления» или «Мои веб-узлы»).

Надо.

wildwolf007 пишет:
Set objFolder = CreateObject("Shell.Application").BrowseForFolder(0, "Example", 0, "My Computer") 
If objFolder Is Nothing Then
MsgBox "No folder selected.",,MyTitle
Else
MsgBox objFolder.Items.Item.path
asdf = objFolder.Items.Item.path
End If

заменить

Set objFolder = CreateObject("Shell.Application").BrowseForFolder(0, "Example", &H1 Or &H10 Or &H200, &H11) 

If objFolder Is Nothing Or Not objFolder.Self.IsFileSystem Then
    MsgBox "No folder selected.",, MyTitle
Else
    asdf = objFolder.Self.path
    MsgBox asdf
End If

?

Забыл пароль и потерял e-mail.

6

Re: Обзор папок на HTA (проблема с рабочим столом)

shiz пишет:

Разве?

А что будет, ежели пользователь нажмёт «Отмена»?

7

Re: Обзор папок на HTA (проблема с рабочим столом)

Nothing -- возвращается объект ShellFolder, а не строка.

Забыл пароль и потерял e-mail.

8

Re: Обзор папок на HTA (проблема с рабочим столом)

Nothing -- возвращается объект ShellFolder, а не строка.

Точно. Там же «Set». Старею, дурею

9

Re: Обзор папок на HTA (проблема с рабочим столом)

Скажите, а откуда получили &H1 Or &H10 Or &H200, &H11 данные наименования ? откуда их узнали для разных ОС (windows xp, windows vista, windows 7 )?

10

Re: Обзор папок на HTA (проблема с рабочим столом)

И как я понимаю доступ к раб столу лучше не открывать ? Ибо что б не было ошибок ?

11

Re: Обзор папок на HTA (проблема с рабочим столом)

Скажите, а откуда получили &H1 Or &H10 Or &H200, &H11 данные наименования ? откуда их узнали для разных ОС (windows xp, windows vista, windows 7 )?

Shell.BrowseForFolder method (Windows) --> BROWSEINFO structure (Windows).

И как я понимаю доступ к раб столу лучше не открывать ? Ибо что б не было ошибок ?

Причём тут доступ к Рабочему столу?

12 (изменено: wildwolf007, 2014-01-08 23:36:40)

Re: Обзор папок на HTA (проблема с рабочим столом)

Ну допустим нужно получить доступ к рабочему столу, через вот такой вот выбор, как ?

13

Re: Обзор папок на HTA (проблема с рабочим столом)

Скажите, а откуда получили &H1 Or &H10 Or &H200, &H11 данные наименования ? откуда их узнали для разных ОС (windows xp, windows vista, windows 7 )?
Shell.BrowseForFolder method (Windows) --> BROWSEINFO structure (Windows).

Спасибо.

14

Re: Обзор папок на HTA (проблема с рабочим столом)

Ну допустим нужно получить доступ к рабочему столу, через вот такой вот выбор, как ?

Например задать 0 четвёртым аргументом BrowseForFolder или его вообще опустить (ещё есть какой-то CLSID и специальные наименования вроде "shell:Desktop" или "shell:DesktopFolder").

Забыл пароль и потерял e-mail.

15

Re: Обзор папок на HTA (проблема с рабочим столом)

Спасибо. Тему можно закрывать.