Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 25

Discussione: [VB6] Copiare file

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    152

    [VB6] Copiare file

    Allora uso questo codice per copiare un file da una cartella all'altra (file pesanti 1-2Gb)

    • Option Explicit
      Private Const FO_COPY = &H2&
      Private Const FO_DELETE = &H3&
      Private Const FO_MOVE = &H1&
      Private Const FO_RENAME = &H4&
      Private Const FOF_ALLOWUNDO = &H40&
      Private Const FOF_CONFIRMMOUSE = &H2&
      Private Const FOF_CREATEPROGRESSDLG = &H0&
      Private Const FOF_FILESONLY = &H80&
      Private Const FOF_MULTIDESTFILES = &H1&
      Private Const FOF_NOCONFIRMATION = &H10&
      Private Const FOF_NOCONFIRMMKDIR = &H200&
      Private Const FOF_RENAMEONCOLLISION = &H8&
      Private Const FOF_SILENT = &H4&
      Private Const FOF_SIMPLEPROGRESS = &H100&

      Private Const FOF_WANTMAPPINGHANDLE = &H20&
      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 Sub CopyMemory Lib "kernel32" _
      Alias "RtlMoveMemory" (hpvDest As Any, _
      hpvSource As Any, ByVal cbCopy As Long)

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


      Dim result As Long
      Dim lenFileop As Long
      Dim foBuf() As Byte
      Dim fileop As SHFILEOPSTRUCT

      lenFileop = LenB(fileop)
      ReDim foBuf(1 To lenFileop)

      With fileop
      .hWnd = Me.hWnd
      .wFunc = FO_COPY
      .pFrom = List1.List(0) & vbNullChar
      .pTo = List2.List(0)
      .fFlags = FOF_CREATEPROGRESSDLG
      End With

      Call CopyMemory(foBuf(1), fileop, lenFileop)
      Call CopyMemory(foBuf(19), foBuf(21), 12)

      List1.RemoveItem 0
      List2.RemoveItem 0

      result = SHFileOperation(foBuf(1))



    Passo i file in due list la prima dove si trova e la seconda dove deve essere copiata, la mia domanda è come rendere questa copia in hide cioè a me serve pur se il programma viene terminato la copia continua, per questo ho usato questo metodo però non voglio che l'utente ha la finestra di tutte queste copie e quindi le vorrei rendere hide come faccio ?

  2. #2
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244

    Re: [VB6] Copiare file

    Originariamente inviato da gprox
    Passo i file in due list la prima dove si trova e la seconda dove deve essere copiata, la mia domanda è come rendere questa copia in hide cioè a me serve pur se il programma viene terminato la copia continua, per questo ho usato questo metodo però non voglio che l'utente ha la finestra di tutte queste copie e quindi le vorrei rendere hide come faccio ?
    Non si capisce niente...
    Spiegati meglio.



    P.S. Ricordati che per il codice si usa l'apposito TAG (pulsante #)

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    152
    Voglio semplicemente copiare un file da una cartella all'altra, però dato che il file pesa vorrei che non rallenta il programma, cioè mentre fa la copia voglio che l'utente possa usare le altre funzioni del programma, e che non veda la finestrella di xp che sta copiando il file, la mia idea era sistemare quel codice ma anche un alternativa può andare, se non avete capito qualcosa ditemi pure, ma credo che sta volta mi sono spiegato a dovere

  4. #4
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Credo che in questo caso, conviene creare un secondo programma (programma2.exe) che si incarica di fare la copia dei file. In questo modo non influirà in alcuna maniera con il tuo programma chiamante, che potrà proseguire senza intoppi.

    Lo imposti che accetti 2 parametri sulla riga di comando
    1) il file da copiare
    2) la destinazione

    Dal tuo programma lo avvi con il comando Shell in modalità nascosta.

    Per la copia è sbagliato scomodare la SHFileOperation dato che non vuoi interagire durante la copia, per cui basta e avanza l'assai più semplice comando FileCopy di VB6.

    Vedi la guida per i dettagli su Command$ e Shell e FileCopy .


  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    152
    ehm come faccio a crearlo per avere due file in ingresso non sono mica in C cioè in vb6 non l'ho mai fatto qualche esempio

  6. #6
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Scusa, ma PRIMA di rispondere hai letto la guida come ti ho detto?

    Nessuno nasce imparato .


  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    152
    quale guida ?????

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    La guida online, ad esempio ... (vedi firma) ...

    ... e per la Command$ in particolare, studia questa

    http://msdn.microsoft.com/en-us/library/aa262696(VS.60).aspx
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    152
    si ok ma se ne devo creare due mi da errore

    Dim Command$(1), Command$(2)

    MsgBox VBA.Command$(1)
    MsgBox VBA.Command&(2)

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    152
    MsgBox VBA.Command$(2)*

    Ho sbagliato a scriverlo qui mi da Dichiarazione doppia nell'area ...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.