2011-11-08 3 views
0

現在のユーザのデスクトップにパスを返すには、スクリプトが必要です。今私はあなたがWScriptでそれを行うことができることを知っています。shell.applicationで特別なフォルダを取得する

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はのequiliventとライン

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

を交換してください。

strDesktop = WshShell.SpecialFolders("Desktop"); 

乾杯

アーロン

答えて

3

あなたはShell. Namespace (...).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")を使用してください。 What is the difference between CreateObject and Wscript.CreateObject?を参照してください。

+0

あなたは完璧な歓声を上げています。そして、あなたは2番目のポイントについて正しいかもしれません。非常に便利なリンクのための乾杯。 – DevilWAH

3

は、名前空間の方法試してみてください。

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

& H10 &をデスクトップのための特別なフォルダ定数です。すべての特殊フォルダ定数のリストについては、technetを参照してください。

関連する問題