Θα προσπαθήσω να απαντήσω, αλλά δεν έχω πλέον VB6 στο μηχάνημα μου, οπότε τα ονόματα των μεθόδων και των properties μπορεί να είναι λάθος.
Καταρχήν, το γεμάτο είναι το Progressbar ελέγχεται από το Value. Αυτό μπορεί να πάρει τιμές μεταξύ των property MinValue και MaxValue. Αυτά μπορείς να τα βάλεις σε όποια τιμή θες εσύ. Αν π.χ. έχεις ένα for loop με 46 βήματα μπορείς άνετα να βάλεις το MaxValue=46.
Κάθε φορά που θέτεις μία νέα τιμή στο Value θα πρέπει να καλείς και την DoEvents για να μπορέσει να ζωγραφιστεί το Progressbar. Διαφορετικά, το progressbar θα ξαναζωγραφιστεί μόνο όταν τελειώσει το loop.
Τώρα στα ερωτήματα σου. Στην πρώτη περίπτωση, το ProgressBar δεν θα σε βοηθήσει. Ο λόγος είναι ότι η αντιγραφή γίνεται σαν μία ενέργεια, οπότε δεν μπορείς να αλλάξεις την τιμή του progressbar κατά τη διάρκεια της. Αν αντιγράφεις πολλά αρχεία, μπορείς να αλλάξεις το Value κάθε φορά που ολοκληρώνεται μία αντιγραφή. Το ίδιο ισχύει και για την εξαγωγή αρχείων από Resources.
Ευτυχώς, υπάρχει ένα function του Win32 API, το SHFileOperation το οποίο επιτρέπει την αντιγραφή αρχείων και την εμφάνιση ενός Progressbar ίδιου με αυτού που εμφανίζουν τα Windows κατά τη διάρκεια της αντιγραφής. Θα βρεις ένα λεπτομερές παράδειγμα παρακάτω http://vbnet.mvps.org/index.html?code/shell/shfileopadv.htm
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos