ResolvePath for VB6 - 解决环境变量

csa*_*uve 6 vb6 environment-variables

我正在寻找可能满足此要求的VB6(或一些WinAPI)中的函数:获取包含环境变量的输入路径字符串,并输出解析了环境变量的路径.

例如:

  • 输入: "%windir%\System32\"
  • 输出: "C:\Windows\System32\"

我当然可以编写自己的解析器,但我想知道这个功能是否已经存在?

这与Spring Framework的" ResolvePath"方法类似.

Kev*_*Kev 6

Kernel32.dll导出一个名为的函数ExpandEnvironmentStrings:

我的VB6生锈但你可以这样做:

Declare Function ExpandEnvironmentStrings _
   Lib "kernel32" Alias "ExpandEnvironmentStringsA" _
   (ByVal lpSrc As String, ByVal lpDst As String, _
   ByVal nSize As Long) As Long
Run Code Online (Sandbox Code Playgroud)

然后在函数或子函数中:

Dim result as Long
Dim strInput As String, strOutput As String
'' Two calls required, one to get expansion buffer length first then do expansion
result = ExpandEnvironmentStrings(strInput, strOutput, result)
strOutput = Space$(result)
result = ExpandEnvironmentStrings(strInput, strOutput, result)
Run Code Online (Sandbox Code Playgroud)


Kry*_*pes 4

最坏的情况你可以使用本机实现:ExpandEnvironmentStrings

  • 或者在 .NET Environment.ExpandEnvironmentVariables 中:http://msdn.microsoft.com/en-us/library/system.environment.expandenvironmentvariables.aspx (2认同)