现在你可以试一下你的新函数:在窗体Form1中加入一个文本框Text1,然后再加入一个命令键Command1,在Command1_Click()事件中加入以下代码:Public Function MyGetWinDirectory() As String
  Dim sBuffer As String
  Dim lSize As Long
   sBuffer = String(255, 0)
   lSize = GetWindowsDirectory (sBuffer, Len(sBuffer))
   sBuffer = Left(sBuffer, lSize)
   sBuffer = sBuffer + “\”
   MyGetWinDirectory = sBuffer 
End Function 
   
 Private Sub Command1_Click() 
   Text1 = MyGetWinDirectory
   MsgBox Text1
 End Sub 

解决方案 »

  1.   

    这能得到common files目录吗?
      

  2.   

    Const MAX_PATH = 260
    Const CSIDL_DESKTOP = &H0& '桌面 
    Const CSIDL_INTERNET = &H1'Internet Explorer
    Const CSIDL_PROGRAMS = &H2& '程式集 
    Const CSIDL_CONTROLS = &H3 'My Computer\Control Panel
    Const CSIDL_PRINTERS = &H4 'My Computer\Printers
    Const CSIDL_PERSONAL = &H5 'My Documents
    Const CSIDL_FAVORITES = &H6& '我的最愛 
    Const CSIDL_STARTUP = &H7& '啟動 
    Const CSIDL_RECENT = &H8& '文件(最近開啟) 
    Const CSIDL_SENDTO = &H9& '傳送至 
    Const CSIDL_BITBUCKET = &HA '{desktop}\Recycle Bin
    Const CSIDL_STARTMENU = &HB& '開始功能表 
    Const CSIDL_DESKTOPDIRECTORY = &H10& '桌面 
    Const CSIDL_DRIVES = &H11 'My Computer
    Const CSIDL_NETWORK = &H12 'Network Neighbourhood
    Const CSIDL_NETHOOD = &H13 'NetHood
    Const CSIDL_FONTS = &H14& '字型 
    Const CSIDL_TEMPLATES = &H15& 'ShellNew
    Const CSIDL_COMMON_STARTMENU = &H16 
    'All Users\Start Menu
    Const CSIDL_COMMON_PROGRAMS = &H17
    'All Users\Programs
    Const CSIDL_COMMON_STARTUP = &H18
    'All Users\Startup
    Const CSIDL_COMMON_DESKTOPDIRECTORY = &H19
    'All Users\Desktop
    Const CSIDL_APPDATA = &H1A 
    '{user}\Application Data
    Const CSIDL_PRINTHOOD = &H1B 
    '{user}\PrintHood
    Const CSIDL_LOCAL_APPDATA = &H1C
    '{user}\Local Settings Application Data (non roaming)
    Const CSIDL_ALTSTARTUP = &H1D
     'non localized startup
    Const CSIDL_COMMON_ALTSTARTUP = &H1E
     'non localized common startup
    Const CSIDL_COMMON_FAVORITES = &H1F
    Const CSIDL_INTERNET_CACHE = &H20
    Const CSIDL_COOKIES = &H21
    Const CSIDL_HISTORY = &H22
    Const CSIDL_COMMON_APPDATA = &H23
    'All Users\Application Data 
    Const CSIDL_WINDOWS = &H24 'Windows目錄
    Const CSIDL_SYSTEM = &H25 'Windows\system目錄
    Const CSIDL_PROGRAM_FILES = &H26 'C:\Program Files
    Const CSIDL_MYPICTURES = &H27 'C:\Program Files\My Pictures
    Const CSIDL_PROFILE = &H28 'USERPROFILE
    Const CSIDL_SYSTEMX86 = &H29
    'x86 system directory on RISC
    Const CSIDL_PROGRAM_FILESX86 = &H2A
    'x86 C:\Program Files on RISC
    Const CSIDL_PROGRAM_FILES_COMMON = &H2B
    'C:\Program Files\Common
    Const CSIDL_PROGRAM_FILES_COMMONX86 = &H2C 
    'x86 Program Files\Common on RISC
    Const CSIDL_COMMON_TEMPLATES = &H2D
    'All Users\Templates
    Const CSIDL_COMMON_DOCUMENTS = &H2E
    'All Users\Documents
    Const CSIDL_COMMON_ADMINTOOLS = &H2F
    'All Users\Start Menu\Programs\Administrative Tools
    Const CSIDL_ADMINTOOLS = &H30
     '{user}\Start Menu\Programs\Administrative ToolsDeclare Function SHGetSpecialFolderLocation Lib "Shell32" (ByVal hwndOwner As Long, ByVal nFolder As Integer, ppidl As Long) As Long
    Declare Function SHGetPathFromIDList Lib "Shell32" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal szPath As String) As Long 註:如果以上的宣告放在「一般模組」底下, 應在 Const 之前加上 Public 保留字, 並且將 Private 保留字去掉。
      2. 呼叫例: Const MAX_PATH = 260
    Dim pidl As Long, S As StringId = CSIDL_DESKTOP ' 「桌面」資料夾
    S = String(MAX_PATH, 0)
    SHGetSpecialFolderLocation 0, Id, pidl
    SHGetPathFromIDList pidl, S
    S = Left(S, InStr(S, Chr(0)) - 1)