Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Vérifier si un programme tourne

9 réponses
Avatar
Informatique_LIDV
Bonjour,

Dans une appli VB, je voudrais vérifier si un programme est en cours
d'éxécution.
Du genre, toutes les 10 secondes, je regarde si le .bat lancé précédemment
est encore en exécution ou non.

Merci pour votre aide

Laëtitia

9 réponses

Avatar
Jacques93
Bonjour Informatique_LIDV,
Informatique_LIDV a écrit :
Bonjour,

Dans une appli VB, je voudrais vérifier si un programme est en cours
d'éxécution.
Du genre, toutes les 10 secondes, je regarde si le .bat lancé précédemment
est encore en exécution ou non.




Si c'est lié à ton précédent message parlant de lancement de .bat avec
CreateProcess, et que le but est d'attendre la fin de l'execution, tu
peux t'inspirer de ceci :

http://support.microsoft.com/?kbid9796

--
Cordialement,

Jacques.
Avatar
Aski
Salutatoi Jacques93,

Tu as donc déclaré :

Bonjour Informatique_LIDV,
Informatique_LIDV a écrit :
Bonjour,

Dans une appli VB, je voudrais vérifier si un programme est en cours
d'éxécution.
Du genre, toutes les 10 secondes, je regarde si le .bat lancé
précédemment est encore en exécution ou non.




Si c'est lié à ton précédent message parlant de lancement de .bat avec
CreateProcess, et que le but est d'attendre la fin de l'execution, tu
peux t'inspirer de ceci :

http://support.microsoft.com/?kbid9796



Voici ce que j'ai écrit pour OE et qui fonctionne :

Public Function IsRunning(Pgm As String) As Boolean
Dim Test As Boolean
Dim Liste As Object, Element As Object
'Pgm = "msimn.exe"
Test = False
Set Liste = GetObject("winmgmts:").InstancesOf("Win32_Process")

For Each Element In Liste
If Trim$(LCase$(Element.Name)) = Trim$(LCase$(Pgm)) Then
Test = True: Exit For
End If
Next
IsRunning = Test
End Function
Avatar
Jacques93
Salutatoi aussi Aski
Aski a écrit :
Salutatoi Jacques93,

Tu as donc déclaré :

Bonjour Informatique_LIDV,
Informatique_LIDV a écrit :
Bonjour,

Dans une appli VB, je voudrais vérifier si un programme est en cours
d'éxécution.
Du genre, toutes les 10 secondes, je regarde si le .bat lancé
précédemment est encore en exécution ou non.




Si c'est lié à ton précédent message parlant de lancement de .bat avec
CreateProcess, et que le but est d'attendre la fin de l'execution, tu
peux t'inspirer de ceci :

http://support.microsoft.com/?kbid9796



Voici ce que j'ai écrit pour OE et qui fonctionne :

Public Function IsRunning(Pgm As String) As Boolean
Dim Test As Boolean
Dim Liste As Object, Element As Object
'Pgm = "msimn.exe"
Test = False
Set Liste = GetObject("winmgmts:").InstancesOf("Win32_Process")

For Each Element In Liste
If Trim$(LCase$(Element.Name)) = Trim$(LCase$(Pgm)) Then
Test = True: Exit For
End If
Next
IsRunning = Test
End Function




Ton code permet de savoir si un programme tourne, quelque soit la
manière et par qui il a été lancé, mais j'ai interprété la question
comme étant plutôt de savoir si le programme ne tourne plus, d'où le
lien que j'ai indiqué qui évite de vérifier de manière répétitive si le
programme est encore actif :-)

--
Cordialement,

Jacques.
Avatar
Aski
Salutatoi Jacques93,

Tu as donc déclaré :

Salutatoi aussi Aski
Aski a écrit :
Salutatoi Jacques93,

Tu as donc déclaré :

Bonjour Informatique_LIDV,
Informatique_LIDV a écrit :
Bonjour,

Dans une appli VB, je voudrais vérifier si un programme est en
cours d'éxécution.
Du genre, toutes les 10 secondes, je regarde si le .bat lancé
précédemment est encore en exécution ou non.




Si c'est lié à ton précédent message parlant de lancement de .bat
avec CreateProcess, et que le but est d'attendre la fin de
l'execution, tu peux t'inspirer de ceci :

http://support.microsoft.com/?kbid9796



Voici ce que j'ai écrit pour OE et qui fonctionne :

Public Function IsRunning(Pgm As String) As Boolean
Dim Test As Boolean
Dim Liste As Object, Element As Object
'Pgm = "msimn.exe"
Test = False
Set Liste = GetObject("winmgmts:").InstancesOf("Win32_Process")

For Each Element In Liste
If Trim$(LCase$(Element.Name)) = Trim$(LCase$(Pgm)) Then
Test = True: Exit For
End If
Next
IsRunning = Test
End Function




Ton code permet de savoir si un programme tourne, quelque soit la
manière et par qui il a été lancé, mais j'ai interprété la question
comme étant plutôt de savoir si le programme ne tourne plus, d'où le
lien que j'ai indiqué qui évite de vérifier de manière répétitive si
le programme est encore actif :-)



Ce n'était pas une critique sur ta façon de répondre, mais comme cela ne me
coûtait rien j'ai donné le code.
--
Cordialement
Aski
Avatar
Jacques93
Aski a écrit :
Salutatoi Jacques93,



[...]


Ce n'était pas une critique sur ta façon de répondre, mais comme cela ne
me coûtait rien j'ai donné le code.



Pas de problème, je ne l'ai pas pris pour une critique :-)
Et les deux méthodes peuvent être utiles.

--
Cordialement,

Jacques.
Avatar
Informatique_LIDV
Merci à tous les 2 pour votre aide. J'ai donc utilisé le programme qui se
trouvait sur le site de Microsoft mais je n'arrive pas à trouver comment
faire pour que le programme s'exécute en plein écran. Si vous avez une idée.

En tous cas, merci bien.

Laëtitia

"Jacques93" a écrit dans le message de news:
%
Aski a écrit :
Salutatoi Jacques93,



[...]


Ce n'était pas une critique sur ta façon de répondre, mais comme cela ne
me coûtait rien j'ai donné le code.



Pas de problème, je ne l'ai pas pris pour une critique :-)
Et les deux méthodes peuvent être utiles.

--
Cordialement,

Jacques.


Avatar
Jacques93
Informatique_LIDV a écrit :
Merci à tous les 2 pour votre aide. J'ai donc utilisé le programme qui se
trouvait sur le site de Microsoft mais je n'arrive pas à trouver comment
faire pour que le programme s'exécute en plein écran. Si vous avez une idée.




S'il s'agit toujours du .bat, donc lancé dans une fenêtre d'invite de
commande, ajoute la déclaration de la constante :

Private Const STARTF_RUNFULLSCREEN = &H20

et modifie le code de ExecCmd ainsi :

Public Function ExecCmd(cmdline$)
Dim proc As PROCESS_INFORMATION
Dim start As STARTUPINFO
Dim ret As Long

' Initialisez la structure STARTUPINFO :
start.cb = Len(start)
start.dwFlags = STARTF_RUNFULLSCREEN '<-----------------------
...

--
Cordialement,

Jacques.
Avatar
Informatique_LIDV
Merci beaucoup pour ton aide, ça fonctionne ...

Laëtitia


"Jacques93" a écrit dans le message de news:

Informatique_LIDV a écrit :
Merci à tous les 2 pour votre aide. J'ai donc utilisé le programme qui se
trouvait sur le site de Microsoft mais je n'arrive pas à trouver comment
faire pour que le programme s'exécute en plein écran. Si vous avez une
idée.




S'il s'agit toujours du .bat, donc lancé dans une fenêtre d'invite de
commande, ajoute la déclaration de la constante :

Private Const STARTF_RUNFULLSCREEN = &H20

et modifie le code de ExecCmd ainsi :

Public Function ExecCmd(cmdline$)
Dim proc As PROCESS_INFORMATION
Dim start As STARTUPINFO
Dim ret As Long

' Initialisez la structure STARTUPINFO :
start.cb = Len(start)
start.dwFlags = STARTF_RUNFULLSCREEN '<-----------------------
...

--
Cordialement,

Jacques.


Avatar
Jacques93
Bonjour Informatique_LIDV,
Informatique_LIDV a écrit :
Merci beaucoup pour ton aide, ça fonctionne ...

Laëtitia




Content pour toi, et merci du retour :-)

--
Cordialement,

Jacques.