Search Tools Links Login

ShellFileCopy with VB6


Copying a file with VB6 is pretty straightforward. However, giving feedback to the user during the copy process has historically been a challenge.

By leveraging the Windows API, we can utilize the same functions that Windows itself uses to copy files, and at the same time make use of the built in copy status dialog. Another VB6 post, by request.

Success or failure of the copy process will be returned as well, with a true/false value.

Example:

dim bSuccess as boolean
bSuccess = ShellFileCopy ("C:\MyFile.txt", "D:\MyFile.txt")

Option Explicit

Private Type SHFILEOPSTRUCT
hwnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAnyOperationsAborted As Long
hNameMappings As Long
lpszProgressTitle As String
End Type

Private Declare Function SHFileOperation Lib "shell32.dll" _
Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long

Private Const FOF_ALLOWUNDO = &H40
Private Const FOF_NOCONFIRMATION = &H10
Private Const FO_COPY = &H2

Public Function ShellFileCopy(src As String, dest As String, _
Optional NoConfirm As Boolean = False) As Boolean

Dim WinType_SFO As SHFILEOPSTRUCT
Dim lRet As Long
Dim lflags As Long

lflags = FOF_ALLOWUNDO
If NoConfirm Then lflags = lflags & FOF_NOCONFIRMATION
With WinType_SFO
.wFunc = FO_COPY
.pFrom = src
.pTo = dest
.fFlags = lflags
End With

lRet = SHFileOperation(WinType_SFO)
ShellFileCopy = (lRet = 0)

End Function

About this post

Posted: 2012-11-25
By: dwirch
Viewed: 2,053 times

Categories

General

Scripting

Windows

Visual Basic 6

Attachments

No attachments for this post


Loading Comments ...

Comments

No comments have been added for this post.

You must be logged in to make a comment.

ADODB.Connection error '800a0e79'

Operation is not allowed when the object is open.

/assets/inc/inc_footer.asp, line 37