Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    102

    [vb6] Messaggio di attesa

    Ciao qualcuno mi sa indicare come mettere un messaggio d'attesa in vb.

    Praticamente uso la shell per far girare un programma esterno, vorrei inserire un messaggio per tutto il tempo che la procedura è in funzione Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    357
    Invece di utilizzare un messaggio di attesa potresti utilizzare la ShellAndWait. Questa funzione consente di avviare, dall'interno del proprio programma, un'applicazione esterna ed attendere che l'esecuzione termini o venga chiusa, prima di procedere con le istruzioni che seguono.


    'Dichiarazioni da inserire in un Modulo bas:

    codice:
    Public Type STARTUPINFO 
        cb As Long 
        lpReserved As String 
        lpDesktop As String 
        lpTitle As String 
        dwX As Long 
        dwY As Long 
        dwXSize As Long 
        dwYSize As Long 
        dwXCountChars As Long 
        dwYCountChars As Long 
        dwFillAttribute As Long 
        dwFlags As Long 
        wShowWindow As Integer 
        cbReserved2 As Integer 
        lpReserved2 As Long 
        hStdInput As Long 
        hStdOutput As Long 
        hStdError As Long 
    End Type
     
    Public Type PROCESS_INFORMATION 
       hProcess As Long 
       hThread As Long 
       dwProcessID As Long 
       dwThreadID As Long 
    End Type 
    
    ' dichiarazioni API 
    
    Public Declare Function WaitForSingleObject Lib "kernel32" (ByVal _ 
    hHandle As Long, ByVal dwMilliseconds As Long) As Long 
    
    Public Declare Function CreateProcessA Lib "kernel32" (ByVal _ 
    lpApplicationName As Long, ByVal lpCommandLine As String, ByVal _ 
    lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, _ 
    ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, _ 
    ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As Long, _ 
    lpStartupInfo As STARTUPINFO, lpProcessInformation As _ 
    PROCESS_INFORMATION) As Long 
    
    Public Declare Function CloseHandle Lib "kernel32" (ByVal _ 
    hObject As Long) As Long 
    
    Public Const NORMAL_PRIORITY_CLASS = &H20& 
    Public Const INFINITE = -1& 
    
    'subroutine per lanciare un programma in sincrono da 
    'inserire sempre nel Modulo bas
    'Il programma lanciato viene 'atteso' per
    'tutta la sua durata.
    
    Public Sub ShellAndWait(ByVal RunProg As String) 
    
       Dim RetVal As Long 
       Dim proc As PROCESS_INFORMATION 
       Dim StartInf As STARTUPINFO 
    
       StartInf.cb = Len(StartInf) 
    'Crea sessione del programma da lanciare 
       RetVal = CreateProcessA(0&, RunProg, 0&, 0&, 1&,   NORMAL_PRIORITY_CLASS, 0&, 0&, StartInf, proc) 
       RetVal = WaitForSingleObject(proc.hProcess, INFINITE) 
       RetVal = CloseHandle(proc.hProcess) 
    
    End Sub 
    '------------------------------
    'In questo esempio sul form alla pressione del tasto di comando viene aperto il file.txt con notepad:

    codice:
    Private Sub Command1_Click() 
      XFile = "c:\File.txt" 
      If Dir(XFile) <> "" Then 
         Call ShellAndWait("notepad.exe " & XFile & "") 
      Else 
         MsgBox "Nessun " & XFile, vbExclamation 
      End If 
    End Sub

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    102
    Ok per l'attesa avevo già risolto Grazie.

    Mi serviva un messaggio durante questa attesa

  4. #4
    Per messaggio puoi usare o una form apposita che si chiude alla fine dell'attesa oppure un Msgbox..

    Altrimenti non ho capito bene..

    ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    102
    esatto e come faccio a chiudere il msgbox alla fine

  6. #6
    O provi tramite le API (funzione SendMessage) ma a questo punto ti è molto più comodo usare un form per visualizzare il messaggio, così magari hai anche la possibilità di inserire una progress-bar, oppure animazioni ecc..e così sai già come fare per chiudere la finestra.
    codice:
    form.visible = false
    unload form
    ciao

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    102
    Grazie

  8. #8
    Figurati..ciao

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 © 2024 vBulletin Solutions, Inc. All rights reserved.