OVH Cloud OVH Cloud

liste du gestionnaire des tâches

15 réponses
Avatar
isabelle
bonjour mpfie(ne)s,

est t'il possible en vba (xl2002) de récupérer la liste du gestionnaire
des tâches
et d'activer la fenêtre d'un des logiciels en cours d'exécution.

merci ! par avance

isabelle

5 réponses

1 2
Avatar
isabelle
bonjour Denis,

merci pour cette utilitaire, c'est bien pratique.
as tu essayé de le manipuler par vba excel ?

isabelle


Bonjour Isabelle,

Il y a un petit utilitaire gratuit disponible à cette adresse :

http://www.pcworld.com/downloads/file_download/0,fid,6102,fileidx,1,00.asp

Le nom de l'utilitaire :
PrcView (Process Viewer) v3.6.2.1

Tout ce passe en Dos, tu as un fichier d'aide que tu peux consulter pour comprendre et exécuter les commandes. Cette
utilitaire traite essentiellement des fichiers (exécutables) du gestionnaire de tâches.

Salutations!

"isabelle" a écrit dans le message de news:
merci ! Starwing, c'est bien cette objet que je veux créer.
sait tu comment récuper la collection item(nom) de cette objet et
basculer vers un item de cette colection en vba ?

isabelle


Je suis content de pouvoir enfin me rendre utile pour toi,

Sub gestionnaire()
Shell "taskmgr.exe", vbNormalFocus
End Sub

Starwing
-----Message d'origine-----
bonjour mpfie(ne)s,

est t'il possible en vba (xl2002) de récupérer la liste
du gestionnaire

des tâches
et d'activer la fenêtre d'un des logiciels en cours
d'exécution.


merci ! par avance

isabelle
.







Avatar
Denis Michon
Bonjour Isabelle,

Ceci doit être réalisable. Il y a la version graphique (PrcView.exe) où tu peux utiliser une fenêtre semblable à celles
de Windows afin d'obtenir l'information désirée. Mais, il y a le petit utilitaire (fichier(pv.exe) en Dos) . En autant
que ce fichier est copié sur le PC, il y a un nombre important de commandes qui peuvent faire l'objet d'un "Batch File".
Un Batch File est facilement exécutable par vba. Si tu désires connaître les commandes Dos disponibles, copie le fichier
à la racine de ton "C:" et dans une fenêtre dos, et passe la commande c:>Pv /?/P .

Évidemment, la connaissance et l'utilisation d'API facilite la tâche !


Salutations!




"isabelle" a écrit dans le message de news:
bonjour Denis,

merci pour cette utilitaire, c'est bien pratique.
as tu essayé de le manipuler par vba excel ?

isabelle


Bonjour Isabelle,

Il y a un petit utilitaire gratuit disponible à cette adresse :

http://www.pcworld.com/downloads/file_download/0,fid,6102,fileidx,1,00.asp

Le nom de l'utilitaire :
PrcView (Process Viewer) v3.6.2.1

Tout ce passe en Dos, tu as un fichier d'aide que tu peux consulter pour comprendre et exécuter les commandes. Cette
utilitaire traite essentiellement des fichiers (exécutables) du gestionnaire de tâches.

Salutations!

"isabelle" a écrit dans le message de news:
merci ! Starwing, c'est bien cette objet que je veux créer.
sait tu comment récuper la collection item(nom) de cette objet et
basculer vers un item de cette colection en vba ?

isabelle


Je suis content de pouvoir enfin me rendre utile pour toi,

Sub gestionnaire()
Shell "taskmgr.exe", vbNormalFocus
End Sub

Starwing
-----Message d'origine-----
bonjour mpfie(ne)s,

est t'il possible en vba (xl2002) de récupérer la liste
du gestionnaire

des tâches
et d'activer la fenêtre d'un des logiciels en cours
d'exécution.


merci ! par avance

isabelle
.







Avatar
Frédéric Sigonneau
Re Isabelle,

AppActivate, d'après ce que j'ai pu observer, active l'application (son icone
dans la barre des tâches devient l'icone active) mais ne l'affiche pas pour
autant (elle reste à l'arrière plan). Et je ne suis pas sûr que la chaîne de
caractères "Microsoft Internet Explorer" lui suffise pour identifier à tous les
coups Internet Explorer (le titre du navigateur comporte aussi la plupart du
temps le nom d'une page web, voire des indications sur son état, connecté ou
non). Mais si cette solution te convient, c'est la seule chose qui importe :-)

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


un gros merci Frédéric, ça fonctionne parfaitement.
dit moi, je trouve que c'est en effet une grosse salade ;-), il y a t'il
un danger à n'utiliser que :
Application.WindowState = xlMaximized
pcc = ("Microsoft Internet Explorer")
AppActivate (pcc)

isabelle


Bonsoir Isabelle,

Une salade d'API en guise de solution :

'======================== > > Private Declare Function GetWindow Lib "user32" _
(ByVal HWnd As Long, ByVal wCmd As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetParent Lib "user32" (ByVal HWnd As Long) As Long
Private Declare Function GetWindowTextLength Lib "user32" _
Alias "GetWindowTextLengthA" (ByVal HWnd As Long) As Long
Private Declare Function GetWindowText Lib "user32" _
Alias "GetWindowTextA" (ByVal HWnd As Long, ByVal lpString As String, _
ByVal cch As Long) As Long
Private Declare Function ShowWindow Lib "user32" _
(ByVal HWnd As Long, ByVal nCmdShow As Long) As Long

Const GW_HWNDFIRST = 0
Const GW_HWNDNEXT = 2
Const SW_SHOWNORMAL = 1

Sub ActiveIExplorer()
Dim CurrWnd&, Length&, i&, twnd&
Dim TaskName$, IEWindow$

i = 1
twnd = FindWindow("Shell_traywnd", vbNullString)
CurrWnd = GetWindow(twnd, GW_HWNDFIRST)
While CurrWnd <> 0
Length = GetWindowTextLength(CurrWnd)
TaskName = Space$(Length + 1)
Length = GetWindowText(CurrWnd, TaskName, Length + 1)
TaskName = Left$(TaskName, Len(TaskName) - 1)
If TaskName Like "*Microsoft Internet Explorer*" Then _
IEWindow = TaskName
CurrWnd = GetWindow(CurrWnd, GW_HWNDNEXT)
DoEvents
Wend

ShowWindow FindWindow(vbNullString, IEWindow), SW_SHOWNORMAL

End Sub
'======================== > >
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


ou encore,
comment en vba, basculer vers la fenêtre Internet Explorer ?

isabelle


bonjour mpfie(ne)s,

est t'il possible en vba (xl2002) de récupérer la liste du gestionnaire
des tâches
et d'activer la fenêtre d'un des logiciels en cours d'exécution.

merci ! par avance

isabelle








Avatar
isabelle
salut Frédéric

oui c'est bien le problème avec mon p'tit bout de code, si au départ
l'application IE est réduite, elle rete en arrière plan, alors j'adopte
ta belle salade :-)
isabelle


Re Isabelle,

AppActivate, d'après ce que j'ai pu observer, active l'application (son icone
dans la barre des tâches devient l'icone active) mais ne l'affiche pas pour
autant (elle reste à l'arrière plan). Et je ne suis pas sûr que la chaîne de
caractères "Microsoft Internet Explorer" lui suffise pour identifier à tous les
coups Internet Explorer (le titre du navigateur comporte aussi la plupart du
temps le nom d'une page web, voire des indications sur son état, connecté ou
non). Mais si cette solution te convient, c'est la seule chose qui importe :-)

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


un gros merci Frédéric, ça fonctionne parfaitement.
dit moi, je trouve que c'est en effet une grosse salade ;-), il y a t'il
un danger à n'utiliser que :
Application.WindowState = xlMaximized
pcc = ("Microsoft Internet Explorer")
AppActivate (pcc)

isabelle


Bonsoir Isabelle,

Une salade d'API en guise de solution :

'======================== > > > Private Declare Function GetWindow Lib "user32" _
(ByVal HWnd As Long, ByVal wCmd As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetParent Lib "user32" (ByVal HWnd As Long) As Long
Private Declare Function GetWindowTextLength Lib "user32" _
Alias "GetWindowTextLengthA" (ByVal HWnd As Long) As Long
Private Declare Function GetWindowText Lib "user32" _
Alias "GetWindowTextA" (ByVal HWnd As Long, ByVal lpString As String, _
ByVal cch As Long) As Long
Private Declare Function ShowWindow Lib "user32" _
(ByVal HWnd As Long, ByVal nCmdShow As Long) As Long

Const GW_HWNDFIRST = 0
Const GW_HWNDNEXT = 2
Const SW_SHOWNORMAL = 1

Sub ActiveIExplorer()
Dim CurrWnd&, Length&, i&, twnd&
Dim TaskName$, IEWindow$

i = 1
twnd = FindWindow("Shell_traywnd", vbNullString)
CurrWnd = GetWindow(twnd, GW_HWNDFIRST)
While CurrWnd <> 0
Length = GetWindowTextLength(CurrWnd)
TaskName = Space$(Length + 1)
Length = GetWindowText(CurrWnd, TaskName, Length + 1)
TaskName = Left$(TaskName, Len(TaskName) - 1)
If TaskName Like "*Microsoft Internet Explorer*" Then _
IEWindow = TaskName
CurrWnd = GetWindow(CurrWnd, GW_HWNDNEXT)
DoEvents
Wend

ShowWindow FindWindow(vbNullString, IEWindow), SW_SHOWNORMAL

End Sub
'======================== > > >
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


ou encore,
comment en vba, basculer vers la fenêtre Internet Explorer ?

isabelle


bonjour mpfie(ne)s,

est t'il possible en vba (xl2002) de récupérer la liste du gestionnaire
des tâches
et d'activer la fenêtre d'un des logiciels en cours d'exécution.

merci ! par avance

isabelle










Avatar
Michel Pierron
Bonjour Isabelle;
Sur un userform, ajouter un contrôle ListBox et on limite la liste aux
fenêtres qui possèdent un titre et qui sont visibles car beaucoup sont
cachées et ne peuvent être activées sous faute de crash.
Dans un module standard:
Private Declare Function EnumWindows Lib "user32.dll" _
(ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Private Declare Function GetWindowTextLength Lib "user32.dll" _
Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
Private Declare Function GetWindowText Lib "user32.dll" Alias _
"GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String _
, ByVal nMaxCount As Long) As Long
Private Declare Function IsWindowVisible Lib "user32" (ByVal hwnd As Long)
As Long

Function EnumWindowsProc(ByVal hwnd As Long, ByVal lParam As Long) As Long
Dim SLength As Long, Buffer As String, RetVal As Long
SLength = GetWindowTextLength(hwnd) + 1
If SLength > 1 And IsWindowVisible(hwnd) Then
Buffer = Space(SLength)
RetVal = GetWindowText(hwnd, Buffer, SLength)
UserForm1.ListBox1.AddItem Left(Buffer, SLength - 1)
End If
EnumWindowsProc = 1
End Function

Sub ProcessList()
Load UserForm1
EnumWindows AddressOf EnumWindowsProc, 0
UserForm1.Show
End Sub

Dans le module UserForm:
Private Declare Function ShowWindow Lib "user32.dll" _
(ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Sub ListBox1_Click()
If Me.ListBox1.ListIndex = -1 Then Exit Sub
ShowWindow FindWindow(vbNullString, Me.ListBox1), 1
End Sub

MP

"isabelle" a écrit dans le message de
news:
bonjour mpfie(ne)s,

est t'il possible en vba (xl2002) de récupérer la liste du gestionnaire
des tâches
et d'activer la fenêtre d'un des logiciels en cours d'exécution.

merci ! par avance

isabelle


1 2