|
-
May 30th, 2000, 08:12 PM
#1
Thread Starter
New Member
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
-
May 30th, 2000, 08:41 PM
#2
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.
-
May 30th, 2000, 09:18 PM
#3
_______
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
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|