Results 1 to 3 of 3

Thread: using explorer in VB

  1. #1

    Thread Starter
    New Member
    Join Date
    Apr 2000
    Posts
    10
    Is it possible to use something the same as explorer in a VB program. I want to use the standard in explorer to view files instead of dirlistbox and filelistbox.

    Please help, Thanx

  2. #2
    PowerPoster BruceG's Avatar
    Join Date
    May 2000
    Location
    New Jersey (USA)
    Posts
    2,657
    You can "make" your own explorer using the treeview and listview controls. Check out this page for some ideas:
    http://www.codearchive.com/vbasic/controls.html
    Good luck.
    "It's cold gin time again ..."

    Check out my website here.

  3. #3
    _______ HeSaidJoe's Avatar
    Join Date
    Jun 1999
    Location
    Canada
    Posts
    3,946

    Found this perhaps it works

    'code and working example of how to use emplorer's copy
    'dialog box



    Public Declare Function SHFileOperation Lib _
    "shell32.dll" Alias "SHFileOperationA" _
    (lpFileOp As Any) As LongPublic Declare Sub SHFreeNameMappings Lib _
    "shell32.dll" (ByVal hNameMappings As Long)

    Public Declare Sub CopyMemory Lib "KERNEL32" _
    Alias "RtlMoveMemory" (hpvDest As Any, hpvSource _
    As Any, ByVal cbCopy As Long)Public Type SHFILEOPSTRUCT
    hwnd As Long
    wFunc As FO_Functions
    pFrom As String
    pTo As String
    fFlags As FOF_Flags
    fAnyOperationsAborted As Long
    hNameMappings As Long
    lpszProgressTitle As String 'only used if FOF_SIMPLEPROGRESS
    End Type

    Public Enum FO_Functions
    FO_MOVE = &H1
    FO_COPY = &H2
    FO_DELETE = &H3
    FO_RENAME = &H4
    End Enum

    Public Enum FOF_Flags
    FOF_MULTIDESTFILES = &H1
    FOF_CONFIRMMOUSE = &H2
    FOF_SILENT = &H4
    FOF_RENAMEONCOLLISION = &H8
    FOF_NOCONFIRMATION = &H10
    FOF_WANTMAPPINGHANDLE = &H20
    FOF_ALLOWUNDO = &H40
    FOF_FILESONLY = &H80
    FOF_SIMPLEPROGRESS = &H100
    FOF_NOCONFIRMMKDIR = &H200
    FOF_NOERRORUI = &H400
    FOF_NOCOPYSECURITYATTRIBS = &H800
    FOF_NORECURSION = &H1000
    FOF_NO_CONNECTED_ELEMENTS = &H2000
    FOF_WANTNUKEWARNING = &H4000
    End Enum

    Public Type SHNAMEMAPPING
    pszOldPath As String
    pszNewPath As String
    cchOldPath As Long
    cchNewPath As Long
    End Type

    '''''''''''''''''''''''''''''''''''''
    Public Function SHFileOP(ByRef lpFileOp As SHFileOpStruct) As Long
    ' This uses a method suggested at MSKB to
    ' ensure that all parameters are passed correctly
    ' Call this wrapper rather than the API function directly

    Dim result As Long
    Dim lenFileop As Long
    Dim foBuf() As Byte

    lenFileop = LenB(lpFileOp)
    ReDim foBuf(1 To lenFileop) ' the size of the structure.

    ' Now we need to copy the structure into a byte array
    Call CopyMemory(foBuf(1), lpFileOp, lenFileop)

    ' Next we move the last 12 bytes by 2 to byte align the data
    Call CopyMemory(foBuf(19), foBuf(21), 12)
    result = SHFileOperation(foBuf(1))

    SHFileOP = result
    End Function
    ''''''''''''''''''''''''''''''''''''''''''''''''''
    Practical Example

    For example to back up your documents and VB programs to a backup folder, you could use this code:

    Dim lret As Long
    Dim fileop As SHFILEOPSTRUCT

    With fileop
    .hwnd = 0
    .wFunc = FO_COPY
    .pFrom = "C:\Program Files\DevStudio\VB\My Programs" & _
    vbNullChar & "C:\My Documents" & vbNullChar & vbNullChar
    .pTo = "c:\Backup of Documents" & vbNullChar & vbNullChar
    .lpszProgressTitle = "Please wait, backing up..."
    .fFlags = FOF_SIMPLEPROGRESS Or FOF_RENAMEONCOLLISION
    End With

    lret = SHFileOp(fileop)

    If result <> 0 Then ' Operation failed
    MsgBox Err.LastDllError 'Show the error returned from the API.
    Else
    If fileop.fAnyOperationsAborted <> 0 Then
    MsgBox "Operation Failed"
    End If
    End If
    To send this directory to the recycle bin when it is too old, you could use this code:

    Dim lret As Long
    Dim fileop As SHFILEOPSTRUCT

    With fileop
    .hwnd = 0
    .wFunc = FO_DELETE
    .pFrom = "c:\Backup of Documents" & vbNullChar & vbNullChar
    .lpszProgressTitle = "Please wait, backing up..."
    .fFlags = FOF_SIMPLEPROGRESS Or FOF_ALLOWUNDO
    End With

    lret = SHFileOp(fileop)

    If result <> 0 Then ' Operation failed
    MsgBox Err.LastDllError 'Show the error returned from the API.
    Else
    If fileop.fAnyOperationsAborted <> 0 Then
    MsgBox "Operation Failed"
    End If
    End If



    "A myth is not the succession of individual images,
    but an integerated meaningful entity,
    reflecting a distinct aspect of the real world."

    ___ Adolf Jensen

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width