Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di yarea
    Registrato dal
    Apr 2004
    Messaggi
    62

    Mettere in attesa un processo

    Ciao a tutti,
    ho scritto un programma per processare dei files, e si attiva ogni tot tempo in automatico.
    Durante il processo deve rinominare dei files e zipparli.
    Problema:
    Il codice per zippare i files crea i files zippati, però lascia anche i file originali, (non riesco a capire qual'è il parametro da mettere per non farglielo fare), allora avevo deciso di cancellare i files originali.
    Il problema è che ci mette più tempo a zipparli di quanto impiega il programma a passare alla riga di codice successiva (cancella), per cui li cancella prima di zipparli.
    Risultato: ho dei files zip vuoti.

    zip = Shell(Path7za & " a -tzip " & Path & "\TEMP\" & "cod" & anno & giorno & CONT_M & "PEFFBN.zip " & Path & "cod" & anno & giorno & CONT_M & "PEFFBN", 1) '**************comprime
    Kill (Path & "WU004PFB" & anno & giorno & CONT_M & "PEFFBN")

    Sto utilizzando il programmino 7za per zippare...

    Help?

    Dany

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,465
    Il linguaggio di cui stiamo parlando?

    Ripassare il Regolamento.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it L'avatar di yarea
    Registrato dal
    Apr 2004
    Messaggi
    62
    Hai ragione, scusa.
    Programmo in vb5...

    Ciao!
    Dany

  4. #4
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Il codice l'ho estratto da un mio applicativo che usa Win_ZIP, devi adattarlo:
    In un modulo Bas:
    codice:
    ' Shell per il Backup con WinZip - programma VB resta in attesa che
    ' il programma lanciato termini:
        Declare Function OpenProcess Lib "kernel32" _
        (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
        Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hprocess As Long, lpExitCode As Long) As Long
        Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
        Const STILL_ACTIVE = &H103
        Const PROCESS_QUERY_INFORMATION = &H400
    '--------------------------------------------
    'Funzione per la copia ed il Backup con WinZip:
    Function RikShell(exe As String, Optional WinStyle) As Integer
        
        Dim processid As Long
        Dim hprocess As Long
        Dim exitcode As Long
        Dim parm As Integer
    
    'Controllo il parametro opzionale finestra:
        Select Case VarType(WinStyle)
            Case vbEmpty, vbNull, vbError
                parm = vbNormalFocus
            Case vbLong, vbInteger, vbSingle, vbDouble
                parm = WinStyle
            Case Else
                parm = vbNormalFocus
        End Select
    
    'Preleva l'ID del processo lanciato:
        processid = Shell(exe, parm)
    
    'Crea un Handle per quel processo:
        hprocess = OpenProcess(PROCESS_QUERY_INFORMATION, False, processid)
        Do
    'Controlla ripetutamente che termini la copia o il backup:
        Call GetExitCodeProcess(hprocess, exitcode)
    'Lascia libero il sistema di processare le altre applicazioni:
            DoEvents
        Loop While (exitcode = STILL_ACTIVE)
    
        CloseHandle (hprocess)
    
    End Function
    codice:
    Nel modulo della Frm:
    'Copia con WinZip:
            Case btComWZ = 1
                FrmDialog.MousePointer = 11
                LblDomanda.Caption = Space(0): LblRispo.Caption = Space(0)
                LblRispo.Caption = "Backup con la compressione dei dati in corso con WinZip"
                StringaComando = "C:\programmi\winzip\winzip32.exe -a -r " & ValoreDir & " " & FolOrig & ""
                'C:\programmi\winzip\wzzip.exe
                'Funzione per la copia ed il Backup - Modulo InfoFol:
                Call RikShell(StringaComando)
                Call LeggiDim
                LblRispo.Caption = "Programma di backup con WinZip terminato."
                LblRispo.Refresh
                'Suono ding.wav - Modulo Connessione:
                Call SoundCopy
                FrmDialog.MousePointer = 0
        End Select

    PS: ValoreDir è il percorso destinazione e FolOrig d'origine.
    LM

  5. #5
    Utente di HTML.it L'avatar di yarea
    Registrato dal
    Apr 2004
    Messaggi
    62
    Grazie mille!
    Provo subito!

    Ciao!

    Dany

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.