Dans VB, je lance une commande shell qui me crée un fichier. Comment puis-je faire pour savoir quand ma commande shell est terminée et donc quand je peux utiliser mon nouveau fichier.
Merci !!!!
Dans VB, je lance une commande shell qui me crée un fichier. Comment puis-je faire pour savoir quand ma commande shell est terminée et donc quand je peux utiliser mon nouveau fichier.
Merci !!!!
Si tu utilises la fonction Shell, elle retourne un bool.
0 pas Ok
1 Ok
a+ scorpia
La fonction Shell ne retourne pas de valeur booléenne, mais plutot un Process ID.
Tu peux utiliser les API pour avoir la liste des process ids courants, et vérifier que le process id retourner par l'appel a la fonction Shell n'est plus présent.
Tu peux utiliser le Timer pour réaliser cette vérification sur un intervalle de temps.
Ne cherches pas au loin ce qui est devant ton nez ! (proverbe chinois ?)
ok autant pour moi , mais je savais bien qu'elle retournait qqch .
bon j'avais un problème qui est le suivant:j'en ai un module de calcul en VC++ que je veux lancer à partir de Vb puis attendre sa fin pour terminer l'exécution de mon programme en Vb.j'en ai trouver la solution sur le net avec un activex si c'est ton cas je peux te l'envoyer.
Bon courage.
Il ne faut jamais désesperer, il y a toujours une solution.
voici un code qui pourra servir
il suffit d'appeler la fonction ProcessusActif en lui passant le PID du processus créé (PID=shell( blabla)) et ça marche impec
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 'constantes processus Public Const MAX_PATH = 260 Public Const TH32CS_SNAPPROCESS = 2& 'type processus Public Type PROCESSENTRY32 lSize As Long lUsage As Long lProcessId As Long lDefaultHeapId As Long lModuleId As Long lThreads As Long lParentProcessId As Long lPriClassBase As Long lFlags As Long sExeFile As String * MAX_PATH End Type 'API processus & threads Public Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, ByVal lProcessId As Long) As Long Public Declare Function ProcessFirst Lib "kernel32" Alias "Process32First" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long Public Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long Public Declare Sub CloseHandle Lib "kernel32" (ByVal hPass As Long) Public Function ProcessusActif(PID As Long) As Boolean Dim cpt As Integer Dim strNomExe As String Dim strProcessID As String Dim lngSnapShot As Long Dim r As Long Dim uProcess As PROCESSENTRY32 lngSnapShot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&) If lngSnapShot <> 0 Then uProcess.lSize = Len(uProcess) r = ProcessFirst(lngSnapShot, uProcess) Do While r If uProcess.lProcessId = PID Then ProcessusActif = True Exit Function End If r = ProcessNext(lngSnapShot, uProcess) Loop CloseHandle (lngSnapShot) End If ProcessusActif = False End Function
a+
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager