PDA

Visualizza la versione completa : [VB] eseguire un comando EXE all'interno di un'applicazione VB


eridano
24-05-2002, 16:13
ciao sapete come si esegue un comando eseguibile
da un'applicazione VB?
tipo EXEC paolo.exe ....

cioè qual'è il metodo per farlo e che sintassi deve avere?

grazie

simoxyz
24-05-2002, 16:19
esiste una funzione che si chiama SHELL ma vedi sull'MSDN come funzione

P.S.:io aspetto ancora una risposta al mio quesito...

ciao :ciauz:

s|n3
24-05-2002, 17:02
semplicemente
shell "c:\percorso\file.exe"

eridano
24-05-2002, 17:55
ok, grazie ho provato e funziona...

ma come posso lanciare un file.exe e riprendere l'esecuzione in VB dopo che questo è terminato ?

è già fatto in automatico da shell? oppure shell apre un nuovo thread indipendente dal processo di VB che lo ha lanciato ?


grazie

s|n3
24-05-2002, 18:13
indipendente dal processo VB...

ans
25-05-2002, 00:53
Ti fai ritornare il PID, ti recuperi l'handle del programma e tramite l'API WaitForSingleObject ti metti in attesa finchè non ha terminato.

Più o meno devi fare:

Public Const INFINITE = -1&
Public Declare Function WaitForSingleObject _
Lib "kernel32" (ByVal hHandle As Long, _
ByVal dwMilliseconds As Long) As Long
Public Declare Function OpenProcess Lib _
"kernel32" (ByVal dwAccess As Long, _
ByVal fInherit As Integer, _
ByVal hObject As Long) As Long

Public Sub WaitForProcessToEnd(cmdLine As String)
Dim retVal As Long, pID As Long, pHandle _
As Long
pID = Shell(cmdLine)
pHandle = OpenProcess(&H100000, True, pID)
retVal = WaitForSingleObject(pHandle, INFINITE)
End Sub

Ti basta richiamare WaitForProcessToEnd:

WaitForProcessToEnd "C:\percorso\nomefile.exe"

Se puoi vuoi aspettare per un certo intervallo di tempo sostituisci a INFINITE i millisecondi di attesa.

Loading