Because I don't like being defeated by myself.

One way is to make a seperate, really tiny executable to do the copying for you.

VB Code:
  1. Public Sub Form_Load()
  2.      'assume Command is sent with a * as a delimiter
  3.      filecopy Mid(Command, 1, InStr(Command, "*") -1), to Mid  (Command, InStr(Command, "*") + 1)
  4. End Sub

Then in your code, Shell to the Executable, and start your timer

VB Code:
  1. Public Sub CopyMe_Click()
  2.  
  3.      ProgressBar.Max = LenB(fileToCopy)
  4.      Shell("locationOfNewExecutable fileToCopy*newLocation", 6)
  5.      Timer.Enable = True
  6.  
  7. End Sub
  8.  
  9. Private Sub Timer_Timer()
  10.      ProgressBar.Value = LenB(newLocation)
  11.      If ProgressBar.Value = ProgressBar.Max Then: Timer.Enabled = False
  12. End Sub

That'll work.