Private Sub Form_Load() Dim buf As String, msg As String, idx As Integer idx = 1 Do buf = Environ(idx) msg = msg & buf & vbCrLf idx = idx + 1 Loop Until buf = ""MsgBox msgEnd Sub ----------------------- Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long Const MAX_LEN = 200 Private Sub Command1_Click() Dim sTmp As String * MAX_LEN Dim nLength As Long Dim pidl As Long Length = GetSystemDirectory(sTmp, MAX_LEN) Print Left(sTmp, Length) & vbCrLf End Sub
原;http://vip.6to23.com/xiaoyaogu/vb/vb1/001.htm 如何用VB获得Windows各类系统目录关健字:VB、Windows路径、系统路径、API 作者:许浩亮 Email:[email protected] 现在有很多关于如何用VB获得Windows目录的文章,但大都只讲到如何获得Windows目录和System目录,有时候我们却需要获得像"我的文档"这样的目录("我的文档"的路径并不是固定的,可以由自己设定,也有可能因为系统的安装路径不同而不同),那又该如何处理呢?下面我们来具体谈谈如何用VB获得这种路径。 先向大家介绍两个API函数,这两个函数分别是SHGetSpecialFolderLocation和SHGetPathFromIDList,这就是我们用来获得各种路径的武器。^………………是不是太长了 还是用我的: i=1 While Environ(i) <> "" msgbox vbCrLf & i & (Environ(i)) i = i + 1 Wend 应用: 窗体上有一个text1.text,并设置 属性设置: Text1.MultiLine = True Text1.ScrollBars = 3 form1代码Dim zheight Private Sub Form_Load() On Error Resume Next zheight = 6150 Text1.Text = getsys End Sub Private Sub Form_Resize() On Error Resume Next Text1.Width = Me.Width Me.Height = zheight End Sub Function getsys() Dim i, zstr i = 1 zstr = "系统参数如下,可以用ENVIRON(""TEMP"")等得到" & vbCrLf While Environ(i) <> "" zstr = zstr & vbCrLf & "ENVIRON(""" & Left(Environ(i), InStr(Environ(i), "=") - 1) & """)=" & Right(Environ(i), Len(Environ(i)) - InStr(Environ(i), "=")) 'Right(Environ(i), InStrRev(Environ(i), "=")) i = i + 1 Wend getsys = zstr End FunctionEnviron(0)代表系统的一个参数,如 ENVIRON(27)就是等于"windir=e:\windows"我的下面的话就是分解成e:\windows 试试以下代码i=1 While Environ(i) <> "" msgbox vbCrLf & i & (Environ(i)) i = i + 1 Wend
这样也行: Option Explicit Private Declare Function SHGetSpecialFolderLocation Lib "Shell32" (ByVal hwndOwner As Long, ByVal nFolder As Integer, ppidl As Long) As Long Private Declare Function SHGetPathFromIDList Lib "Shell32" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal szPath As String) As Long Const MAX_LEN = 260 Const ID_System = 37Private Sub Form_Load() Dim sTmp As String * MAX_LEN '存放结果的固定长度的字符串 Dim pidl As Long '某特殊目录在特殊目录列表中的位置 '*************************获取系统目录路径********************************** SHGetSpecialFolderLocation 0, ID_System, pidl SHGetPathFromIDList pidl, sTmp MsgBox Left(sTmp, InStr(sTmp, Chr(0)) - 1) End Sub 还有一种办法是访问注册表,这样的代码很多,我就不罗嗦了
用fso对象也行 Private Sub Command1_Click() Dim fso Set fso = CreateObject("scripting.filesystemobject") MsgBox fso.GetSpecialFolder(1) End Sub其中的GetSpecialFolder方法 返回指定的特殊文件夹。 语法 object.GetSpecialFolder(folderspec) GetSpecialFolder 方法语法有如下几部分: 部分 描述 object 必需的。始终是一个 FileSystemObject 的名字。 folderspec 必需的。要返回的特殊文件夹的名字。可以是在设置值部分中列出的任何常数。 设置值 folderspec 参数可为任何的下列值: 常数 值 描述 WindowsFolder 0 Windows 文件夹,包含由 Windows 操作系统安装的文件。 SystemFolder 1 系统文件夹,包含库、字体、设备驱动程序。 TemporaryFolder 2 Temp 文件夹,用于存储临时文件。它的路径在 TMP 环境变量中。
我靠,一群高手,根本不给我施展才华的机会.不行,就算灌水也要顶.先 Declare Function GetWindowsDirectory Lib "Kernel32.dll" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Integer) As Long 再 Function MyGetWindowsDir() As String Dim Temp As String, X As Integer '-------------------------------------------------- ' Calls the windows API to get the windows directory '-------------------------------------------------- Temp$ = String$(145, 0) ' Size Buffer X = GetWindowsDirectory(Temp$, 145) ' Make API Call Temp$ = MyLeftB$(Temp$, X) ' Trim Buffer If Right$(Temp$, 1) <> "\" Then ' Add \ if necessary MyGetWindowsDir$ = Temp$ + "\" Else MyGetWindowsDir$ = Temp$ End IfEnd Function
Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Public Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As LongPublic Function GetwinDir() As String Dim Buffer As String * 255 Dim rtn As Long Dim WinPath As String rtn = GetWindowsDirectory(Buffer, Len(Buffer)) WinPath = Left(Buffer, rtn) GetwinDir = WinPath
Dim buf As String, msg As String, idx As Integer
idx = 1
Do
buf = Environ(idx)
msg = msg & buf & vbCrLf
idx = idx + 1
Loop Until buf = ""MsgBox msgEnd Sub
-----------------------
Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Const MAX_LEN = 200
Private Sub Command1_Click()
Dim sTmp As String * MAX_LEN
Dim nLength As Long
Dim pidl As Long
Length = GetSystemDirectory(sTmp, MAX_LEN)
Print Left(sTmp, Length) & vbCrLf
End Sub
如何用VB获得Windows各类系统目录关健字:VB、Windows路径、系统路径、API
作者:许浩亮 Email:[email protected]
现在有很多关于如何用VB获得Windows目录的文章,但大都只讲到如何获得Windows目录和System目录,有时候我们却需要获得像"我的文档"这样的目录("我的文档"的路径并不是固定的,可以由自己设定,也有可能因为系统的安装路径不同而不同),那又该如何处理呢?下面我们来具体谈谈如何用VB获得这种路径。
先向大家介绍两个API函数,这两个函数分别是SHGetSpecialFolderLocation和SHGetPathFromIDList,这就是我们用来获得各种路径的武器。^………………是不是太长了
还是用我的:
i=1
While Environ(i) <> ""
msgbox vbCrLf & i & (Environ(i))
i = i + 1
Wend
应用:
窗体上有一个text1.text,并设置
属性设置:
Text1.MultiLine = True
Text1.ScrollBars = 3
form1代码Dim zheight
Private Sub Form_Load()
On Error Resume Next
zheight = 6150
Text1.Text = getsys
End Sub
Private Sub Form_Resize()
On Error Resume Next
Text1.Width = Me.Width
Me.Height = zheight
End Sub
Function getsys()
Dim i, zstr
i = 1
zstr = "系统参数如下,可以用ENVIRON(""TEMP"")等得到" & vbCrLf
While Environ(i) <> ""
zstr = zstr & vbCrLf & "ENVIRON(""" & Left(Environ(i), InStr(Environ(i), "=") - 1) & """)=" & Right(Environ(i), Len(Environ(i)) - InStr(Environ(i), "="))
'Right(Environ(i), InStrRev(Environ(i), "="))
i = i + 1
Wend
getsys = zstr
End FunctionEnviron(0)代表系统的一个参数,如
ENVIRON(27)就是等于"windir=e:\windows"我的下面的话就是分解成e:\windows
试试以下代码i=1
While Environ(i) <> ""
msgbox vbCrLf & i & (Environ(i))
i = i + 1
Wend
比方:Environ("windir")为windows安装文件夹.Environ("TEMP"),临时文件夹
Environ("PROCESSOR_IDENTIFIER"),处理器的信息
等等.
Option Explicit
Private Declare Function SHGetSpecialFolderLocation Lib "Shell32" (ByVal hwndOwner As Long, ByVal nFolder As Integer, ppidl As Long) As Long
Private Declare Function SHGetPathFromIDList Lib "Shell32" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal szPath As String) As Long
Const MAX_LEN = 260
Const ID_System = 37Private Sub Form_Load()
Dim sTmp As String * MAX_LEN '存放结果的固定长度的字符串
Dim pidl As Long '某特殊目录在特殊目录列表中的位置
'*************************获取系统目录路径**********************************
SHGetSpecialFolderLocation 0, ID_System, pidl
SHGetPathFromIDList pidl, sTmp
MsgBox Left(sTmp, InStr(sTmp, Chr(0)) - 1)
End Sub
还有一种办法是访问注册表,这样的代码很多,我就不罗嗦了
Private Sub Command1_Click()
Dim fso
Set fso = CreateObject("scripting.filesystemobject")
MsgBox fso.GetSpecialFolder(1)
End Sub其中的GetSpecialFolder方法
返回指定的特殊文件夹。
语法
object.GetSpecialFolder(folderspec)
GetSpecialFolder 方法语法有如下几部分:
部分 描述
object 必需的。始终是一个 FileSystemObject 的名字。
folderspec 必需的。要返回的特殊文件夹的名字。可以是在设置值部分中列出的任何常数。
设置值
folderspec 参数可为任何的下列值:
常数 值 描述
WindowsFolder 0 Windows 文件夹,包含由 Windows 操作系统安装的文件。
SystemFolder 1 系统文件夹,包含库、字体、设备驱动程序。
TemporaryFolder 2 Temp 文件夹,用于存储临时文件。它的路径在 TMP 环境变量中。
Declare Function GetWindowsDirectory Lib "Kernel32.dll" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Integer) As Long
再
Function MyGetWindowsDir() As String Dim Temp As String, X As Integer
'--------------------------------------------------
' Calls the windows API to get the windows directory
'--------------------------------------------------
Temp$ = String$(145, 0) ' Size Buffer
X = GetWindowsDirectory(Temp$, 145) ' Make API Call
Temp$ = MyLeftB$(Temp$, X) ' Trim Buffer If Right$(Temp$, 1) <> "\" Then ' Add \ if necessary
MyGetWindowsDir$ = Temp$ + "\"
Else
MyGetWindowsDir$ = Temp$
End IfEnd Function
Dim Buffer As String * 255
Dim rtn As Long
Dim WinPath As String rtn = GetWindowsDirectory(Buffer, Len(Buffer))
WinPath = Left(Buffer, rtn)
GetwinDir = WinPath
End Function
函数返回当前操作系统目录
我只说一点:用API可以取得所有的系统路径,你不妨在网上搜索一下“API”函数。
Dim objFSO
Set objFSO = CreateObject("Scripting.FileSystemObject")
MsgBox objFSO.GetSpecialFolder(1)End Sub