PDA

View Full Version : [VB5] Attendere la chiusura dell'applicazione


DanieleC88
09-07-2002, 18:53
Sto creando un programma che usa un'editor esterno di pagine HTML (esempio FrontPage) e, usando la funzione Shell, dovrebbe aspettare la chiusura del programma e riaggiornare il file. Come posso rendere inattivo il mio programma durante la modifica con FrontPage (ed attenderne quindi la chiusura) ?

:confused:

cisky
10-07-2002, 13:57
Devi usare anche qualche altra funzione API in conguinzione con la Funzione SHELL.

Ti allego un esempio di codice che lancia un'applicazione ed attende che termini

' *** DICHIARAZIONI

Private Const SYNCHRONIZE = &H100000
Private Const INFINITE = &HFFFF

Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, _
ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, _
ByVal dwMilliseconds As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long


' *** SUB CHE LANCIA UN APPLIZAZIONE ASPETTANDO CHE TERMINI

Private Sub LanciaApplicazione(ByVal ssApplicazione As String)

Dim lProgID As Long
Dim lHwnd As Long
Dim lRet As Long

sApplicazione = Trim$(sApplicazione)
If Len(sApplicazione) = 0 Then Exit Sub

' *** Recupero l'ID del Task dell'Applicazione lanciata
lProgID = Shell(sApplicazione, vbNormalFocus)
If lProgID <> 0 Then
lHwnd = OpenProcess(SYNCHRONIZE, 0, lProgID)

If lHwnd <> 0 Then
' *** Aspetto che l'Applicazione termini
lRet = WaitForSingleObject(lHwnd, INFINITE)
CloseHandle (lHwnd)
End If
End If

End Sub

P.S: Si puo' anche impostare un tempo di attesa variabile al posto della costante INFINITE

cisky
10-07-2002, 13:59
OPS! ... l'indentazione del codice è sparita ma il concetto rimane.

Ciao ;)

cionci
10-07-2002, 15:36
Per mantenere l'indentazione usa il tag {code} {/code}
Al posto di {} metti []...

Ciao