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

Comment lister processus acifs ???

4 réponses
Avatar
LE TROLL
Bonjour,

Ça fait plus d'une heure que je lis le Net en Français, sans réellement
trouver : Comment lister les processus actifs ?

Exemple, j'ai un exe A qui lance un exe B et un exe C, je dois donc
avoir au moins ces 3 processus actifs (visualisable par <Ctrl>+<Alt>+<Del>)
"A, B et C), donc, disons dans list1, comment lui envoyer le nom de tous les
processus actif (nom.extension), ceci au plus simple, VB ou API, merci ???

Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.

4 réponses

Avatar
Jean-Marc
On 16 sep, 05:56, "LE TROLL" <le wrote:
        Bonjour,

    Ça fait plus d'une heure que je lis le Net en Français, sans réellement
trouver : Comment lister les processus actifs ?



Hello,

Pourtant Google est ton ami! Il suffit de chercher "VB lister les
processus" pour obtenir des dizaines d'exemples. Rien que sur VBFrance
(et en français en plus!), il y a des dizaines d'exemples tout
prêt :-)

Aller, en voici un (pas testé par moi!) : http://www.vbfrance.com/codes/R AM-VIEWER_1344.aspx

En cas de problèmes, s'adresser à l'auteur du code :-)

Bien cordialement,


--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
LE TROLL
Bonjour Jean-Marc,

Merci de ta réponse, c'est vrai qu'il y en a un peu, mais il ne font pas
ce que je cherche (juste lister).
Ils font tous plein d'autres choses, alors sans connaitre ces fonctions, ces
dll, ces constantes, souvent, seulement "bien" documentées qu'en anglais, et
puis ensuite tout tester ne me disait rien, je cherchais du simple...
Je vais voir le code proposé, mais déjà j'y vois un module, comme s'il
fallait rajouter une form (bas), histoire de promener ces yeux entre deux
sources, et ils sont tous sur ce genre, on devrait pouvoir enlever 75% du
code que ça marcherait encore... euh, je présume...

Cordialement ;o)

_______________________
.
.


"Jean-Marc" a écrit dans le message de
news:
On 16 sep, 05:56, "LE TROLL" <le wrote:
Bonjour,

Ça fait plus d'une heure que je lis le Net en Français, sans réellement
trouver : Comment lister les processus actifs ?



Hello,

Pourtant Google est ton ami! Il suffit de chercher "VB lister les
processus" pour obtenir des dizaines d'exemples. Rien que sur VBFrance
(et en français en plus!), il y a des dizaines d'exemples tout
prêt :-)

Aller, en voici un (pas testé par moi!) :
http://www.vbfrance.com/codes/RAM-VIEWER_1344.aspx

En cas de problèmes, s'adresser à l'auteur du code :-)

Bien cordialement,


--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
LE TROLL
Tiens,

Comme je le disais, d'une complexité inutile, dans la form t'as environ
5 lignes car tout est dans le module, comme si pour ce programme on ne
pouvait pas tout mettre dans une seule feuille, et idem, y 3 pages de code,
et faut trier là dedans le bon code... Les processus n'ont pas leur nom
d'extension, parfois il y a un blanc devant le nom (trim(x)) à faire, en
pagaille (pas de tri)...

Objets : text1 (2 croll, mulilines), text2, text3; text4 (idem à text1),
command1

form1
Private Sub Command1_Click()
Module1.ListVisibleWindowstxt Text1
Module1.ListAllWindowstxt Text4
Text2.Text = Module1.GetFreeMemory
Text3.Text = Module1.TotalMemory
End Sub ' la form sert juste à cliquer le bouton, pas glop pas glop !

----------------------

module1.bas

'Declaration des API
Public Declare Function IsWindowVisible Lib "user32" (ByVal Handle As Long)
As Long
Private Declare Function GetDesktopWindow Lib "user32" () As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal
wCmd As Long) As Long
Private Declare Sub GlobalMemoryStatus Lib "kernel32" (lpBuffer As
MEMORYSTATUS)
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA"
(ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long

Private Type MEMORYSTATUS
dwLength As Long
dwMemoryLoad As Long
dwTotalPhys As Long
dwAvailPhys As Long
dwTotalPageFile As Long
dwAvailPageFile As Long
dwTotalVirtual As Long
dwAvailVirtual As Long
End Type



Const GW_CHILD = 5
Const GW_HWNDFIRST = 0
Const GW_HWNDLAST = 1
Const GW_HWNDNEXT = 2
Const GW_HWNDPREV = 3
Const GW_OWNER = 4

'''''''''''''''''
'Les Fonctions '
'''''''''''''''''

'Pour obtenir la memoire total
Function TotalMemory()
Dim MS As MEMORYSTATUS
MS.dwLength = Len(MS)
GlobalMemoryStatus MS
TotalMemory = Int(MS.dwTotalPhys / 1000000) & " Mo"
End Function

'Pour obtenir la memoire libre
Function GetFreeMemory()
Dim MS As MEMORYSTATUS

MS.dwLength = Len(MS)
GlobalMemoryStatus MS
GetFreeMemory = MS.dwAvailPhys & " octets de mémoire libres"
End Function


'Liste tout les fenetre (visible ou pas) dans un controle Texte Box
Function ListAllWindowstxt(txtbox As TextBox)
Dim hwnd As Long
Dim Titre_Fenetre As String * 255
Dim TitreFen As String
Dim ret As Long
Dim I As Integer

txtbox.Text = ""

hwnd = GetDesktopWindow()
hwnd = GetWindow(hwnd, GW_CHILD)

Do While (Not IsNull(hwnd)) And (hwnd <> 0)
Titre_Fenetre = String(255, 0)

ret = GetWindowText(hwnd, Titre_Fenetre, 255)
If Titre_Fenetre <> String(255, 0) Then
TitreFen = Titre_Fenetre
TitreFen = Left(TitreFen, ret)
txtbox.Text = txtbox.Text & TitreFen & vbCrLf
End If
hwnd = GetWindow(hwnd, GW_HWNDNEXT)
Loop
End Function





Function ListVisibleWindowstxt(txtbox As TextBox)
Dim hwnd As Long
Dim Titre_Fenetre As String * 255
Dim TitreFen As String
Dim ret As Long
Dim I As Integer


hwnd = GetDesktopWindow()
hwnd = GetWindow(hwnd, GW_CHILD)

Do While (Not IsNull(hwnd)) And (hwnd <> 0)
Titre_Fenetre = String(255, 0)

ret = GetWindowText(hwnd, Titre_Fenetre, 255)
If Titre_Fenetre <> String(255, 0) Then
TitreFen = Titre_Fenetre
TitreFen = Left(TitreFen, ret)
If IsWindowVisible(hwnd) Then
txtbox.Text = txtbox.Text & TitreFen & vbCrLf
End If
End If
hwnd = GetWindow(hwnd, GW_HWNDNEXT)
Loop

End Function

-------------------------------

N'est-ce pas que ça fait un peu compliqué pour avoir juste la liste
des processus, et tous les exemples sont un peu de cet ordre... Bon, je vais
tenter de l'utiliser néanmoins... en testant, ça occupe...

Cordialement ;o)

_______________________
.
.


"Jean-Marc" a écrit dans le message de
news:
On 16 sep, 05:56, "LE TROLL" <le wrote:
Bonjour,

Ça fait plus d'une heure que je lis le Net en Français, sans réellement
trouver : Comment lister les processus actifs ?



Hello,

Pourtant Google est ton ami! Il suffit de chercher "VB lister les
processus" pour obtenir des dizaines d'exemples. Rien que sur VBFrance
(et en français en plus!), il y a des dizaines d'exemples tout
prêt :-)

Aller, en voici un (pas testé par moi!) :
http://www.vbfrance.com/codes/RAM-VIEWER_1344.aspx

En cas de problèmes, s'adresser à l'auteur du code :-)

Bien cordialement,


--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
Jacques93
Bonjour LE TROLL,
LE TROLL a écrit :
Bonjour,

Ça fait plus d'une heure que je lis le Net en Français, sans
réellement trouver : Comment lister les processus actifs ?

Exemple, j'ai un exe A qui lance un exe B et un exe C, je dois donc
avoir au moins ces 3 processus actifs (visualisable par
<Ctrl>+<Alt>+<Del>) "A, B et C), donc, disons dans list1, comment lui
envoyer le nom de tous les processus actif (nom.extension), ceci au plus
simple, VB ou API, merci ???




Au plus court, avec WMI :

Private Sub ListProcess()
Dim strComputer As String
Dim objWMIService As Object
Dim colProcesses As Object
Dim objProcess As Object

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!" _
& strComputer & "rootcimv2")

Set colProcesses = objWMIService.ExecQuery( _
"select * from win32_process")
For Each objProcess In colProcesses
Debug.Print objProcess.Caption
' ou objProcess.ExecutablePath, si tu veux le chemin complet
Next
End Sub

Doc complète en anglais de win32_process :

<http://msdn.microsoft.com/en-us/library/aa394372(VS.85).aspx>

--

Cordialement,

Jacques.