|
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. | NEI PREFERITI | .:: | RSS Forum | RSS News | NEWS web | NEWS software | |
| PUBBLICITA' | | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | | CERCA nel FORUM » | |
10-01-2011, 13.25.33 | #1 |
Junior Member
Registrato: 31-03-2009
Loc.: Genova
Messaggi: 61
|
Copia di file da una cartalla ad un'altra in rete.
Tempo fa ho realizzato un programma in VB6 che automaticamente copia il contenuto di una cartella e tutte le sotto-cartelle in un'altra parte della mia rete. Quando parte la copia viene visualizzata la "solita" finestra di copia di windows, per tutto il processo. Ogni tanto però capita che la copia si interrompe per problemi su qualche file. come posso far intercettare dal programma questi avvisi per fare delle azioni decise da me? A esempio inviarmi un avviso send, che la copia si è interrotta sul file "X" |
10-01-2011, 13.28.17 | #2 |
Junior Member
Registrato: 31-03-2009
Loc.: Genova
Messaggi: 61
|
Aggiungo che il programma da me realizzato tempo fa, sfrutta alcune funzioni, (trovate su internet), per lanciare il comando copia di windows.
Nel particolare in un file .Bas ho inserito : Public Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long Public Type SHFILEOPSTRUCT hwnd As Long wFunc As Long pFrom As String pTo As String fFlags As Integer fAnyOperationsAborted As Boolean hNameMappings As Long lpszProgressTitle As String ' usato solo se FOF_SIMPLEPROGRESS End Type 'costanti per wFunc Public Const FO_COPY = &H2 Public Const FO_DELETE = &H3 Public Const FO_MOVE = &H1 Public Const FO_RENAME = &H4 'costanti per fFlags Public Const FOF_ALLOWUNDO = &H40 Public Const FOF_CONFIRMMOUSE = &H2 Public Const FOF_FILESONLY = &H80 ' con *.*, elabora solo i file Public Const FOF_MULTIDESTFILES = &H1 Public Const FOF_NOCONFIRMATION = &H10 ' Non richiede conferma All 'utente. Public Const FOF_NOCONFIRMMKDIR = &H200 ' non conferma la creazione di directory necessarie Public Const FOF_RENAMEONCOLLISION = &H8 Public Const FOF_SILENT = &H4 ' non crea un rapporto avanzamento Public Const FOF_SIMPLEPROGRESS = &H100 ' non visualizza i nomi dei file Public Const FOF_WANTMAPPINGHANDLE = &H20 ' Inserisce SHFILEOPSTRUCT.hNameMappings Poi in una sub della Form ho inserito : With shFileOp .hwnd = Me.hwnd .pFrom = Da 'Percorso cartella origine .pTo = A 'Percorso cartella destinazione .wFunc = FO_COPY .fFlags = FOF_NOCONFIRMMKDIR Or FOF_NOCONFIRMATION End With DoEvents SHFileOperation shFileOp ------------- Il processo di copia funziona perfettamente, ma se si blocca per un problema come, un file in uso, o altro, il processo, (come succede anche da gestione risorse), si ferma in quel punto con un avviso. Dato che tutta la copia viene fatta in automatico e di notte, su una macchina remota, vorrei che il programma mi avvisasse con un messaggio send con il problema trovato e il nome del file "incriminato" del problema e proseguisse poi nell'operazione con il resto dei file. Se non si può per il proseguimento dell'operazione, almeno essere avvisati, poi intervengo a mano alla mattina. Si puo ottenere ciò aggiungendo altre API ? Grazie... |
10-01-2011, 14.45.39 | #3 |
Gold Member
WT Expert
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
|
SHFileOperation è una funzione e come tale deve restituire un valore: e' lo stesso sia per la copia effettuata con successo sia per quella effettuata con insuccesso ?
nb: se non sbaglio VB ha un'utile funzione chiamata filecopy senza ricorrere esplicitamente alle funzioni API di Windows. |
10-01-2011, 15.04.15 | #4 |
Junior Member
Registrato: 31-03-2009
Loc.: Genova
Messaggi: 61
|
Ciao
ho usato SHFileOperation perchè mi permette di copiare intere cartelle e le eventuali sotto cartelle, non so se "filecopy" mi permette ciò. Come posso leggere il valore restituito da SHFileOperation ? E' possibile risalire anche al file "bloccato" per intervenire poi ? |
10-01-2011, 18.38.53 | #5 | |
Gold Member
WT Expert
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
|
Quota:
Variabile=SHFileOperation(struttura) Se <>0 , messaggio err.lastdllerror Mai provato: quando mi son trovato ad eseguire operazioni di copia/cancellazione/creazione cartelle ho sempre proceduto creando ogni singola operazione attraverso le apposite funzioni API solo per prestazione pura: Puoi fare tutto con dir e mkdir, filecopy, oppure open "" for binary lock write as-> while wend->close. Cerca su Google "SHFileOperation hook" oppure "hooking di SHFileOperation" |
|
10-01-2011, 19.05.04 | #6 |
Depeche Mode Fan
Top Poster
Registrato: 18-12-2000
Loc.: Bolzano
Messaggi: 8.872
|
non ti sarebbe comodo invece un programma che faccia il lavoro d icopia'
ce ne sono tanti anche free...e mandano pure email in caso di copia errata e/o altri errori... ciaooo
___________________________________
DEPECHE MODE e WINTRICKS DIPENDENTE - Il mio sito : HTTP://CIPPICO.ALTERVISTA.ORG Date anche uno sguardo ai miei articoli sul sito MegaLab.it... ...CLICCANDO QUI ...spero possano esservi utili . |
Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti) | |
Strumenti discussione | |
|
|
Discussioni simili | ||||
Discussione | Autore discussione | Forum | Risposte | Ultimo messaggio |
log di AVAST...che faccio ? | enry1 | Sicurezza&Privacy | 4 | 27-11-2008 19.38.09 |
Vista MCE e file di rete | texaco | Windows 7/Vista/XP/ 2003 | 0 | 06-09-2008 18.50.56 |
Condivisione file e rete in xp | linus2006 | Internet e Reti locali | 14 | 11-06-2007 09.06.59 |
[XP/SP2] Controllo in corso del file System | primoair | Windows 7/Vista/XP/ 2003 | 2 | 28-02-2006 22.13.01 |
computer da immondizzia | ziopazzo | Windows 9x/Me/NT4/2000 | 3 | 09-05-2004 01.20.30 |