当前位置:编程学习 > C#/ASP.NET >>

莫名奇妙的SHGetPathFromIDList函数

下面这个代码是excel的VBA代码:
Declare Function SHBrowseForFolder Lib "shell32.dll" Alias "SHBrowseForFolderA" (lpBrowseInfo As FolderInfor) As Long
Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function EnableWindow Lib "user32" (ByVal hWnd As Long, ByVal fEnable As Long) As Long
Public Type FolderInfor
    hOwner As Long
    pidlRoot As Long
    pszDisplayName As String
    lpszTitle As String
    ulFlags As Long
    lpfn As Long
    lParam As Long
    iImage As Long
End Type
Sub getpath()
Dim iFolder As FolderInfor
    Dim pidl As Long, Flag As Long, iPath As String, Pos As Integer, myPath As String
          EnableWindow FindWindow("XLMAIN", Application.Caption), False
       pidl = SHBrowseForFolder(iFolder)
       EnableWindow FindWindow("XLMAIN", Application.Caption), True
    iPath = Space$(512)
    Flag = SHGetPathFromIDList(ByVal pidl, ByVal iPath)
    If Flag Then
        Pos = InStr(iPath, Chr$(0))
              myPath = Left(iPath, Pos - 1)
    End If
    MsgBox "你选择了 " & myPath
    
  End Sub
在  Flag = SHGetPathFromIDList(ByVal pidl, ByVal iPath)
后,iPath的值改变了,但根据ByVal,iPath只是形参啊,怎么回事啊?
补充:.NET技术 ,  VB.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,