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

(vba) accès au gestionnaire de tâches ...

6 réponses
Avatar
j-pascal
Bonsoir,

Est-il possible d'ouvrir le gestionnaire de tâches à partir d'une macro ?

Si oui, peut-on vérifier le lancement d'un programme en cours d'exécution ?

Je crains que cette question soit farfelue, mais bon ... Excel et ses
mystères ...

Merci ;-)

Cordialement,

JP

6 réponses

Avatar
LSteph
Bonsoir,

Lister les process dans excel:

http://cjoint.com/?mnaD3B7B0f

'''''Code uf

Private Sub CommandButton1_Click()
KillProcess ComboBox1
End Sub

Private Sub CommandButton2_Click()
Unload Me
End Sub

Private Sub UserForm_Initialize()

On Error GoTo UIniError

Set svc = GetObject("winmgmts:rootcimv2")
myQuery = "select * from win32_process"
For Each myp In svc.execquery(myQuery)
ListBox1.AddItem myp.Name & " = " & myp.ExecutablePath
ComboBox1.AddItem myp.Name
Next
Set svc = Nothing
Exit Sub

UIniError:
MsgBox "Error " & Err.Number & " (" & Err.Description & ")"
Err.Clear
End Sub

Public Function KillProcess(ByVal ProcessName As String) As Boolean

Set svc = GetObject("winmgmts:rootcimv2")
myQuery = "select * from win32_process where name='" & ProcessName
& "'"
For Each myp In svc.execquery(myQuery)
myp.Terminate
Next
Set svc = Nothing
End Function

''''ThisWorkBook
Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call delTest
End Sub

Private Sub Workbook_Open()

Dim monmenu As CommandBarControl, monoption As CommandBarPopup
Set monmenu = _
Application.CommandBars(1).Controls.Add(msoControlPopup, , , , True)
With monmenu
.Caption = "&Qualité"
End With
Set monoption = _
monmenu.Controls.Add(msoControlPopup, , , , True)


With monoption
.Caption = "ListeP"
.OnAction = "MySub"
End With

End Sub

'''''Module1
Sub MySub()
UserForm1.Show
End Sub
Sub delTest()
Application.CommandBars(1).Controls("&Qualité").Delete
End Sub

'lSteph



Bonsoir,

Est-il possible d'ouvrir le gestionnaire de tâches à partir d'une macro ?

Si oui, peut-on vérifier le lancement d'un programme en cours d'exécution ?

Je crains que cette question soit farfelue, mais bon ... Excel et ses
mystères ...

Merci ;-)

Cordialement,

JP


Avatar
LSteph
;o) sinon plus simplement

Sub taskM()
Shell "taskmgr.exe"
End Sub

'lSteph

Bonsoir,

Est-il possible d'ouvrir le gestionnaire de tâches à partir d'une macro ?

Si oui, peut-on vérifier le lancement d'un programme en cours d'exécution ?

Je crains que cette question soit farfelue, mais bon ... Excel et ses
mystères ...

Merci ;-)

Cordialement,

JP


Avatar
j-pascal
Bonjour Stéphane,

Merci !

J'ai lu ton code jusqu'au bout, mais inutile de te dire que je n'ai pas
compris 2 lignes d'affilées ...
Je commence à comprendre pourquoi je n'ai pas eu de réponse à une question
du même genre posée ces derniers jours ; les autres contributeurs ont
certainement voulu me ménager ... ;-)
Je n'en demeure pas moins très impressionné par ta présente réponse (et je
pense même que je serai loin d'être le seul sur le forum ...) !

JP

"LSteph" a écrit dans le message de news:
%23%
Bonsoir,

Lister les process dans excel:

http://cjoint.com/?mnaD3B7B0f

'''''Code uf

Private Sub CommandButton1_Click()
KillProcess ComboBox1
End Sub

Private Sub CommandButton2_Click()
Unload Me
End Sub

Private Sub UserForm_Initialize()

On Error GoTo UIniError

Set svc = GetObject("winmgmts:rootcimv2")
myQuery = "select * from win32_process"
For Each myp In svc.execquery(myQuery)
ListBox1.AddItem myp.Name & " = " & myp.ExecutablePath
ComboBox1.AddItem myp.Name
Next
Set svc = Nothing
Exit Sub

UIniError:
MsgBox "Error " & Err.Number & " (" & Err.Description & ")"
Err.Clear
End Sub

Public Function KillProcess(ByVal ProcessName As String) As Boolean

Set svc = GetObject("winmgmts:rootcimv2")
myQuery = "select * from win32_process where name='" & ProcessName &
"'"
For Each myp In svc.execquery(myQuery)
myp.Terminate
Next
Set svc = Nothing
End Function

''''ThisWorkBook
Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call delTest
End Sub

Private Sub Workbook_Open()

Dim monmenu As CommandBarControl, monoption As CommandBarPopup
Set monmenu = _
Application.CommandBars(1).Controls.Add(msoControlPopup, , , , True)
With monmenu
.Caption = "&Qualité"
End With
Set monoption = _
monmenu.Controls.Add(msoControlPopup, , , , True)


With monoption
.Caption = "ListeP"
.OnAction = "MySub"
End With

End Sub

'''''Module1
Sub MySub()
UserForm1.Show
End Sub
Sub delTest()
Application.CommandBars(1).Controls("&Qualité").Delete
End Sub

'lSteph



Bonsoir,

Est-il possible d'ouvrir le gestionnaire de tâches à partir d'une macro ?

Si oui, peut-on vérifier le lancement d'un programme en cours d'exécution
?

Je crains que cette question soit farfelue, mais bon ... Excel et ses
mystères ...

Merci ;-)

Cordialement,

JP




Avatar
j-pascal
Re,

J'ai relu ...

Le mot "KillProcess" me fait un peu peur ! Je ne veux pas arrêter de
processus !
Si c'est plus simple, est-il possible de lister les processus dans une
Feuille (ie) et de comparer "toto.exe" à cette liste (pour voir s'il s'y
trouve) ?

Je commence à y croire ;-)

@+ ?

JP

PS : quand je dis "plus simple" c'est pour éviter le UF, le UF_initialize,
les "Boutons", le "_BeforeClose", etc. Comme il semble possible de récupérer
tous les processus en cours, j'imagine qu'on peut les copier dans une
Feuille ??
"LSteph" a écrit dans le message de news:
%23%
Bonsoir,

Lister les process dans excel:

http://cjoint.com/?mnaD3B7B0f

'''''Code uf

Private Sub CommandButton1_Click()
KillProcess ComboBox1
End Sub

Private Sub CommandButton2_Click()
Unload Me
End Sub

Private Sub UserForm_Initialize()

On Error GoTo UIniError

Set svc = GetObject("winmgmts:rootcimv2")
myQuery = "select * from win32_process"
For Each myp In svc.execquery(myQuery)
ListBox1.AddItem myp.Name & " = " & myp.ExecutablePath
ComboBox1.AddItem myp.Name
Next
Set svc = Nothing
Exit Sub

UIniError:
MsgBox "Error " & Err.Number & " (" & Err.Description & ")"
Err.Clear
End Sub

Public Function KillProcess(ByVal ProcessName As String) As Boolean

Set svc = GetObject("winmgmts:rootcimv2")
myQuery = "select * from win32_process where name='" & ProcessName &
"'"
For Each myp In svc.execquery(myQuery)
myp.Terminate
Next
Set svc = Nothing
End Function

''''ThisWorkBook
Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call delTest
End Sub

Private Sub Workbook_Open()

Dim monmenu As CommandBarControl, monoption As CommandBarPopup
Set monmenu = _
Application.CommandBars(1).Controls.Add(msoControlPopup, , , , True)
With monmenu
.Caption = "&Qualité"
End With
Set monoption = _
monmenu.Controls.Add(msoControlPopup, , , , True)


With monoption
.Caption = "ListeP"
.OnAction = "MySub"
End With

End Sub

'''''Module1
Sub MySub()
UserForm1.Show
End Sub
Sub delTest()
Application.CommandBars(1).Controls("&Qualité").Delete
End Sub

'lSteph



Bonsoir,

Est-il possible d'ouvrir le gestionnaire de tâches à partir d'une macro ?

Si oui, peut-on vérifier le lancement d'un programme en cours d'exécution
?

Je crains que cette question soit farfelue, mais bon ... Excel et ses
mystères ...

Merci ;-)

Cordialement,

JP




Avatar
LSteph
Si c'est juste pour afficher le GT
Regarde mon autre proposition..

;-))

Bonjour Stéphane,

Merci !

J'ai lu ton code jusqu'au bout, mais inutile de te dire que je n'ai pas
compris 2 lignes d'affilées ...
Je commence à comprendre pourquoi je n'ai pas eu de réponse à une
question du même genre posée ces derniers jours ; les autres
contributeurs ont certainement voulu me ménager ... ;-)
Je n'en demeure pas moins très impressionné par ta présente réponse (et
je pense même que je serai loin d'être le seul sur le forum ...) !

JP

"LSteph" a écrit dans le message de news:
%23%
Bonsoir,

Lister les process dans excel:

http://cjoint.com/?mnaD3B7B0f

'''''Code uf

Private Sub CommandButton1_Click()
KillProcess ComboBox1
End Sub

Private Sub CommandButton2_Click()
Unload Me
End Sub

Private Sub UserForm_Initialize()

On Error GoTo UIniError

Set svc = GetObject("winmgmts:rootcimv2")
myQuery = "select * from win32_process"
For Each myp In svc.execquery(myQuery)
ListBox1.AddItem myp.Name & " = " & myp.ExecutablePath
ComboBox1.AddItem myp.Name
Next
Set svc = Nothing
Exit Sub

UIniError:
MsgBox "Error " & Err.Number & " (" & Err.Description & ")"
Err.Clear
End Sub

Public Function KillProcess(ByVal ProcessName As String) As Boolean

Set svc = GetObject("winmgmts:rootcimv2")
myQuery = "select * from win32_process where name='" &
ProcessName & "'"
For Each myp In svc.execquery(myQuery)
myp.Terminate
Next
Set svc = Nothing
End Function

''''ThisWorkBook
Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call delTest
End Sub

Private Sub Workbook_Open()

Dim monmenu As CommandBarControl, monoption As CommandBarPopup
Set monmenu = _
Application.CommandBars(1).Controls.Add(msoControlPopup, , , , True)
With monmenu
.Caption = "&Qualité"
End With
Set monoption = _
monmenu.Controls.Add(msoControlPopup, , , , True)


With monoption
.Caption = "ListeP"
.OnAction = "MySub"
End With

End Sub

'''''Module1
Sub MySub()
UserForm1.Show
End Sub
Sub delTest()
Application.CommandBars(1).Controls("&Qualité").Delete
End Sub

'lSteph



Bonsoir,

Est-il possible d'ouvrir le gestionnaire de tâches à partir d'une
macro ?

Si oui, peut-on vérifier le lancement d'un programme en cours
d'exécution ?

Je crains que cette question soit farfelue, mais bon ... Excel et ses
mystères ...

Merci ;-)

Cordialement,

JP







Avatar
LSteph
;-)
c'est précisément ce à quoi sert ce joujou mais qui peut le plus peut le
moins
en tout cas c'est bien la preuve que tu lis bien le code..
..et je n'en ai jamais douté :)))


Re,

J'ai relu ...

Le mot "KillProcess" me fait un peu peur ! Je ne veux pas arrêter de
processus !
Si c'est plus simple, est-il possible de lister les processus dans une
Feuille (ie) et de comparer "toto.exe" à cette liste (pour voir s'il s'y
trouve) ?

Je commence à y croire ;-)

@+ ?

JP

PS : quand je dis "plus simple" c'est pour éviter le UF, le
UF_initialize, les "Boutons", le "_BeforeClose", etc. Comme il semble
possible de récupérer tous les processus en cours, j'imagine qu'on peut
les copier dans une Feuille ??
"LSteph" a écrit dans le message de news:
%23%
Bonsoir,

Lister les process dans excel:

http://cjoint.com/?mnaD3B7B0f

'''''Code uf

Private Sub CommandButton1_Click()
KillProcess ComboBox1
End Sub

Private Sub CommandButton2_Click()
Unload Me
End Sub

Private Sub UserForm_Initialize()

On Error GoTo UIniError

Set svc = GetObject("winmgmts:rootcimv2")
myQuery = "select * from win32_process"
For Each myp In svc.execquery(myQuery)
ListBox1.AddItem myp.Name & " = " & myp.ExecutablePath
ComboBox1.AddItem myp.Name
Next
Set svc = Nothing
Exit Sub

UIniError:
MsgBox "Error " & Err.Number & " (" & Err.Description & ")"
Err.Clear
End Sub

Public Function KillProcess(ByVal ProcessName As String) As Boolean

Set svc = GetObject("winmgmts:rootcimv2")
myQuery = "select * from win32_process where name='" &
ProcessName & "'"
For Each myp In svc.execquery(myQuery)
myp.Terminate
Next
Set svc = Nothing
End Function

''''ThisWorkBook
Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call delTest
End Sub

Private Sub Workbook_Open()

Dim monmenu As CommandBarControl, monoption As CommandBarPopup
Set monmenu = _
Application.CommandBars(1).Controls.Add(msoControlPopup, , , , True)
With monmenu
.Caption = "&Qualité"
End With
Set monoption = _
monmenu.Controls.Add(msoControlPopup, , , , True)


With monoption
.Caption = "ListeP"
.OnAction = "MySub"
End With

End Sub

'''''Module1
Sub MySub()
UserForm1.Show
End Sub
Sub delTest()
Application.CommandBars(1).Controls("&Qualité").Delete
End Sub

'lSteph



Bonsoir,

Est-il possible d'ouvrir le gestionnaire de tâches à partir d'une
macro ?

Si oui, peut-on vérifier le lancement d'un programme en cours
d'exécution ?

Je crains que cette question soit farfelue, mais bon ... Excel et ses
mystères ...

Merci ;-)

Cordialement,

JP