Мой код работает правильно во многих системах и возвращает содержимое папки камеры правильно, но тот же код возвращает ноль при запуске на другом компьютере и клиентском компьютере. Это мой код:
Public Function GetShell32NameSpace(ByVal folder As Object) As Shell32.Folder
Dim shellAppType As Type = Type.GetTypeFromProgID("Shell.Application")
Dim shell As Object = Activator.CreateInstance(shellAppType)
Return CType(shellAppType.InvokeMember("NameSpace", System.Reflection.BindingFlags.InvokeMethod, Nothing, shell, New Object() {folder}), Shell32.Folder)
End Function
Private Sub btn_Click(.....)
Dim ShellObject As New Shell = CreateObject("shell.application")
Dim srcfolder As Shell32.Folder = ShellObject.BrowseForFolder(CInt(Handle), "Choose Folder", 0, 0)
If (srcfolder Is Nothing) Then
Else
Dim fi As FolderItem = (TryCast(srcfolder, Folder3)).Self
Dim path As String = fi.Path
Dim FolderCollection As Shell32.Folder= GetShell32NameSpace(Trim(path))
End If
End sub
Я успешно получаю Путь к выбранной папке (используя BrowseForFolder), но при передаче возвращенного пути в функции GetShell32NameSpace () в некоторых системах возвращается Null, но работает нормально и возвращает все содержимое папки камеры. в другой системе.