получение специальных папок с помощью shell.application - PullRequest
0 голосов
/ 08 ноября 2011

Мне нужно в скрипте вернуть путь к рабочему столу текущего пользователя.Теперь я знаю, что вы можете сделать это с помощью WScript.

var WshShell = WScript.CreateObject("WScript.Shell");
         strDesktop = WshShell.SpecialFolders("Desktop");

Но для моего скрипта это не сработает, так как я не могу использовать WScript.но я могу использовать объект shell.application, как показано ниже.

 dim objShell
        dim ssfWINDOWS
        dim objFolder

        ssfWINDOWS = 0
        set objShell = CreateObject("shell.application")
            set objFolder = objshell.BrowseForFolder(0, "Example", 0, ssfWINDOWS)
                if (not objFolder is nothing) then
                Set objFolderItem = objFolder.Self
                    g_objIE.Document.All("logdir").Value = objFolderItem.path
                end if
            set objFolder = nothing
        set objShell = nothing

Каков синтаксис, чтобы вместо «BrowseForFolder» я мог просто возвращать путь рабочего стола текущего пользователя?

IE заменяет строку

set objFolder = objshell.BrowseForFolder(0, "Example", 0, ssfWINDOWS)

равным.

strDesktop = WshShell.SpecialFolders("Desktop");

Приветствия

Аарон

Ответы [ 2 ]

3 голосов
/ 08 ноября 2011

Вам нужно использовать Shell.<a href="http://msdn.microsoft.com/en-us/library/windows/desktop/bb774085.aspx" rel="nofollow noreferrer">Namespace</a>(...).Self.Path:

Const ssfDESKTOPDIRECTORY = &h10
Set oShell = CreateObject("Shell.Application")
strDesktop = oShell.NameSpace(ssfDESKTOPDIRECTORY).Self.Path

WScript.Echo strDesktop


Но для моего скрипта это не сработает, так как я не могу использовать WScript.

Вы имеете в виду, что вы не можете использовать WScript.CreateObject(...), потому что WScript не определено? Если это так, вы можете просто использовать CreateObject("WScript.Shell").SpecialFolders("Desktop") вместо этого. См. В чем разница между CreateObject и Wscript.CreateObject? .

3 голосов
/ 08 ноября 2011

Попробуйте метод пространства имен:

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(&H10&)

Где & H10 & - это специальная константа папки для рабочего стола.См. technet для получения списка всех специальных констант папок.

...