OVH Cloud OVH Cloud

Processus....

4 réponses
Avatar
Sebdo
Bonjour,

J'essaye désésperement d'obtenir une liste des processus actifs sur un poste
( le nom du .exe qui tourne ) afin de pouvoir l'arreter.

Quelqu'un connait il une API ou autre chose permettant de faire ca
simplement ?

Merci d'avance pour vos réponse.

Websebdo

4 réponses

Avatar
cédric naudy
Ceci devrait vous aider :

187913 HOWTO: List Running Processes
http://support.microsoft.com/?id7913

Cédric

"Sebdo" wrote in message
news:bn5i84$c4b$
Bonjour,

J'essaye désésperement d'obtenir une liste des processus actifs sur un


poste
( le nom du .exe qui tourne ) afin de pouvoir l'arreter.

Quelqu'un connait il une API ou autre chose permettant de faire ca
simplement ?

Merci d'avance pour vos réponse.

Websebdo




Avatar
Sebdo
Heuu excuses moi mais le lien ne fonctionne pas chez moi....

Tu pourrais me faire un petit copier coller si ce n'est pas trop abuser ?

Merci beaucoup...
Sebdo

"cédric naudy" a écrit dans le message news:

Ceci devrait vous aider :

187913 HOWTO: List Running Processes
http://support.microsoft.com/?id7913

Cédric



> Bonjour,
>
> J'essaye désésperement d'obtenir une liste des processus actifs sur un
poste
> ( le nom du .exe qui tourne ) afin de pouvoir l'arreter.
>
> Quelqu'un connait il une API ou autre chose permettant de faire ca
> simplement ?
>
> Merci d'avance pour vos réponse.
>
> Websebdo
>
>




Avatar
cédric naudy
Le voici :
=============
HOWTO: List Running Processes
Liste des produits concernés par cet article.
This article was previously published under Q187913
SUMMARY
This article illustrates how you can list the processes that are currently
running on a computer. The approach is different for Windows 95/98 and
Windows NT; this article illustrates both solutions.
MORE INFORMATION
This situation requires that you first test to see which version of Windows
is in use. Once that determination is made, the correct code can then be run
to examine and list the current processes. On Windows NT, requests for
information on some system processes may be denied for security or other
related reasons. The approach taken in this article will ignore any process
that cannot be accessed.

PSAPI.DLL is the library used to gather process information on Windows NT
and must reside in the SYSTEM32 directory. There are two versions of this
file, 3.51 and 4.0. Either version will work for this example, but using the
most recent version is recommended. If you have installed the Windows NT 4.0
Resource Kit or the Windows NT 4.0 SDK, this file will be present on your
computer. The 4.0 version of the file is available on the Visual Studio
Visual C++ CD-ROM in the following directory:

DEVSTUDIOVCBINPSAPI.DLL.


The 3.51 version of the file is available on the Visual Studio Visual Basic
CD-ROM in the directory:

TOOLSUNSUPPRTWSVIEWWINNTPSAPI.DLL



Step-by-Step Example
Create a new Standard Exe project in Visual Basic. Form1 is created by
default.
Add a CommandButton to Form1.
Add a ListBox to Form1.
Copy the following code to Form1:


Option Explicit

Private Sub Command1_Click()
List1.Clear
Select Case getVersion()

Case 1 'Windows 95/98

Dim f As Long, sname As String
Dim hSnap As Long, proc As PROCESSENTRY32
hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
If hSnap = hNull Then Exit Sub
proc.dwSize = Len(proc)
' Iterate through the processes
f = Process32First(hSnap, proc)
Do While f
sname = StrZToStr(proc.szExeFile)
List1.AddItem sname
f = Process32Next(hSnap, proc)
Loop

Case 2 'Windows NT

Dim cb As Long
Dim cbNeeded As Long
Dim NumElements As Long
Dim ProcessIDs() As Long
Dim cbNeeded2 As Long
Dim NumElements2 As Long
Dim Modules(1 To 200) As Long
Dim lRet As Long
Dim ModuleName As String
Dim nSize As Long
Dim hProcess As Long
Dim i As Long
'Get the array containing the process id's for each process object
cb = 8
cbNeeded = 96
Do While cb <= cbNeeded
cb = cb * 2
ReDim ProcessIDs(cb / 4) As Long
lRet = EnumProcesses(ProcessIDs(1), cb, cbNeeded)
Loop
NumElements = cbNeeded / 4

For i = 1 To NumElements
'Get a handle to the Process
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION _
Or PROCESS_VM_READ, 0, ProcessIDs(i))
'Got a Process handle
If hProcess <> 0 Then
'Get an array of the module handles for the specified
'process
lRet = EnumProcessModules(hProcess, Modules(1), 200, _
cbNeeded2)
'If the Module Array is retrieved, Get the ModuleFileName
If lRet <> 0 Then
ModuleName = Space(MAX_PATH)
nSize = 500
lRet = GetModuleFileNameExA(hProcess, Modules(1), _
ModuleName, nSize)
List1.AddItem Left(ModuleName, lRet)
End If
End If
'Close the handle to the process
lRet = CloseHandle(hProcess)
Next

End Select
End Sub


Add a Standard Module to the Project. Module1 is created.
Paste the following code into Module1.
Public Declare Function Process32First Lib "kernel32" ( _
ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long

Public Declare Function Process32Next Lib "kernel32" ( _
ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long

Public Declare Function CloseHandle Lib "Kernel32.dll" _
(ByVal Handle As Long) As Long

Public Declare Function OpenProcess Lib "Kernel32.dll" _
(ByVal dwDesiredAccessas As Long, ByVal bInheritHandle As Long, _
ByVal dwProcId As Long) As Long

Public Declare Function EnumProcesses Lib "psapi.dll" _
(ByRef lpidProcess As Long, ByVal cb As Long, _
ByRef cbNeeded As Long) As Long

Public Declare Function GetModuleFileNameExA Lib "psapi.dll" _
(ByVal hProcess As Long, ByVal hModule As Long, _
ByVal ModuleName As String, ByVal nSize As Long) As Long

Public Declare Function EnumProcessModules Lib "psapi.dll" _
(ByVal hProcess As Long, ByRef lphModule As Long, _
ByVal cb As Long, ByRef cbNeeded As Long) As Long

Public Declare Function CreateToolhelp32Snapshot Lib "kernel32" ( _
ByVal dwFlags As Long, ByVal th32ProcessID As Long) As Long

Public Declare Function GetVersionExA Lib "kernel32" _
(lpVersionInformation As OSVERSIONINFO) As Integer

Public Type PROCESSENTRY32
dwSize As Long
cntUsage As Long
th32ProcessID As Long ' This process
th32DefaultHeapID As Long
th32ModuleID As Long ' Associated exe
cntThreads As Long
th32ParentProcessID As Long ' This process's parent process
pcPriClassBase As Long ' Base priority of process threads
dwFlags As Long
szExeFile As String * 260 ' MAX_PATH
End Type

Public Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long '1 = Windows 95.
'2 = Windows NT

szCSDVersion As String * 128
End Type

Public Const PROCESS_QUERY_INFORMATION = 1024
Public Const PROCESS_VM_READ = 16
Public Const MAX_PATH = 260
Public Const STANDARD_RIGHTS_REQUIRED = &HF0000
Public Const SYNCHRONIZE = &H100000
'STANDARD_RIGHTS_REQUIRED Or SYNCHRONIZE Or &HFFF
Public Const PROCESS_ALL_ACCESS = &H1F0FFF
Public Const TH32CS_SNAPPROCESS = &H2&
Public Const hNull = 0

Function StrZToStr(s As String) As String
StrZToStr = Left$(s, Len(s) - 1)
End Function

Public Function getVersion() As Long
Dim osinfo As OSVERSIONINFO
Dim retvalue As Integer
osinfo.dwOSVersionInfoSize = 148
osinfo.szCSDVersion = Space$(128)
retvalue = GetVersionExA(osinfo)
getVersion = osinfo.dwPlatformId
End Function


Run the project and click the Command button on Form1. You should see a
listing of the currently running processes.
If you are running Windows 95/98, try running the example project on
Windows NT or vice versa. The processes should be listed regardless of
operating system version.

=============
Cédric

"Sebdo" wrote in message
news:bn5kl7$cif$
Heuu excuses moi mais le lien ne fonctionne pas chez moi....

Tu pourrais me faire un petit copier coller si ce n'est pas trop abuser ?

Merci beaucoup...
Sebdo

"cédric naudy" a écrit dans le message news:

> Ceci devrait vous aider :
>
> 187913 HOWTO: List Running Processes
> http://support.microsoft.com/?id7913
>
> Cédric

> > Bonjour,
> >
> > J'essaye désésperement d'obtenir une liste des processus actifs sur un
> poste
> > ( le nom du .exe qui tourne ) afin de pouvoir l'arreter.
> >
> > Quelqu'un connait il une API ou autre chose permettant de faire ca
> > simplement ?
> >
> > Merci d'avance pour vos réponse.
> >
> > Websebdo
> >
> >
>
>




Avatar
Sebdo
Merci je vais essayer ca.....

Bye.

Seb

"cédric naudy" a écrit dans le message news:

Le voici :
============= >
HOWTO: List Running Processes
Liste des produits concernés par cet article.
This article was previously published under Q187913
SUMMARY
This article illustrates how you can list the processes that are currently
running on a computer. The approach is different for Windows 95/98 and
Windows NT; this article illustrates both solutions.
MORE INFORMATION
This situation requires that you first test to see which version of


Windows
is in use. Once that determination is made, the correct code can then be


run
to examine and list the current processes. On Windows NT, requests for
information on some system processes may be denied for security or other
related reasons. The approach taken in this article will ignore any


process
that cannot be accessed.

PSAPI.DLL is the library used to gather process information on Windows NT
and must reside in the SYSTEM32 directory. There are two versions of this
file, 3.51 and 4.0. Either version will work for this example, but using


the
most recent version is recommended. If you have installed the Windows NT


4.0
Resource Kit or the Windows NT 4.0 SDK, this file will be present on your
computer. The 4.0 version of the file is available on the Visual Studio
Visual C++ CD-ROM in the following directory:

DEVSTUDIOVCBINPSAPI.DLL.


The 3.51 version of the file is available on the Visual Studio Visual


Basic
CD-ROM in the directory:

TOOLSUNSUPPRTWSVIEWWINNTPSAPI.DLL



Step-by-Step Example
Create a new Standard Exe project in Visual Basic. Form1 is created by
default.
Add a CommandButton to Form1.
Add a ListBox to Form1.
Copy the following code to Form1:


Option Explicit

Private Sub Command1_Click()
List1.Clear
Select Case getVersion()

Case 1 'Windows 95/98

Dim f As Long, sname As String
Dim hSnap As Long, proc As PROCESSENTRY32
hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
If hSnap = hNull Then Exit Sub
proc.dwSize = Len(proc)
' Iterate through the processes
f = Process32First(hSnap, proc)
Do While f
sname = StrZToStr(proc.szExeFile)
List1.AddItem sname
f = Process32Next(hSnap, proc)
Loop

Case 2 'Windows NT

Dim cb As Long
Dim cbNeeded As Long
Dim NumElements As Long
Dim ProcessIDs() As Long
Dim cbNeeded2 As Long
Dim NumElements2 As Long
Dim Modules(1 To 200) As Long
Dim lRet As Long
Dim ModuleName As String
Dim nSize As Long
Dim hProcess As Long
Dim i As Long
'Get the array containing the process id's for each process


object
cb = 8
cbNeeded = 96
Do While cb <= cbNeeded
cb = cb * 2
ReDim ProcessIDs(cb / 4) As Long
lRet = EnumProcesses(ProcessIDs(1), cb, cbNeeded)
Loop
NumElements = cbNeeded / 4

For i = 1 To NumElements
'Get a handle to the Process
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION _
Or PROCESS_VM_READ, 0, ProcessIDs(i))
'Got a Process handle
If hProcess <> 0 Then
'Get an array of the module handles for the specified
'process
lRet = EnumProcessModules(hProcess, Modules(1), 200, _
cbNeeded2)
'If the Module Array is retrieved, Get the ModuleFileName
If lRet <> 0 Then
ModuleName = Space(MAX_PATH)
nSize = 500
lRet = GetModuleFileNameExA(hProcess, Modules(1), _
ModuleName, nSize)
List1.AddItem Left(ModuleName, lRet)
End If
End If
'Close the handle to the process
lRet = CloseHandle(hProcess)
Next

End Select
End Sub


Add a Standard Module to the Project. Module1 is created.
Paste the following code into Module1.
Public Declare Function Process32First Lib "kernel32" ( _
ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long

Public Declare Function Process32Next Lib "kernel32" ( _
ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long

Public Declare Function CloseHandle Lib "Kernel32.dll" _
(ByVal Handle As Long) As Long

Public Declare Function OpenProcess Lib "Kernel32.dll" _
(ByVal dwDesiredAccessas As Long, ByVal bInheritHandle As Long, _
ByVal dwProcId As Long) As Long

Public Declare Function EnumProcesses Lib "psapi.dll" _
(ByRef lpidProcess As Long, ByVal cb As Long, _
ByRef cbNeeded As Long) As Long

Public Declare Function GetModuleFileNameExA Lib "psapi.dll" _
(ByVal hProcess As Long, ByVal hModule As Long, _
ByVal ModuleName As String, ByVal nSize As Long) As Long

Public Declare Function EnumProcessModules Lib "psapi.dll" _
(ByVal hProcess As Long, ByRef lphModule As Long, _
ByVal cb As Long, ByRef cbNeeded As Long) As Long

Public Declare Function CreateToolhelp32Snapshot Lib "kernel32" ( _
ByVal dwFlags As Long, ByVal th32ProcessID As Long) As Long

Public Declare Function GetVersionExA Lib "kernel32" _
(lpVersionInformation As OSVERSIONINFO) As Integer

Public Type PROCESSENTRY32
dwSize As Long
cntUsage As Long
th32ProcessID As Long ' This process
th32DefaultHeapID As Long
th32ModuleID As Long ' Associated exe
cntThreads As Long
th32ParentProcessID As Long ' This process's parent process
pcPriClassBase As Long ' Base priority of process


threads
dwFlags As Long
szExeFile As String * 260 ' MAX_PATH
End Type

Public Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long '1 = Windows 95.
'2 = Windows NT

szCSDVersion As String * 128
End Type

Public Const PROCESS_QUERY_INFORMATION = 1024
Public Const PROCESS_VM_READ = 16
Public Const MAX_PATH = 260
Public Const STANDARD_RIGHTS_REQUIRED = &HF0000
Public Const SYNCHRONIZE = &H100000
'STANDARD_RIGHTS_REQUIRED Or SYNCHRONIZE Or &HFFF
Public Const PROCESS_ALL_ACCESS = &H1F0FFF
Public Const TH32CS_SNAPPROCESS = &H2&
Public Const hNull = 0

Function StrZToStr(s As String) As String
StrZToStr = Left$(s, Len(s) - 1)
End Function

Public Function getVersion() As Long
Dim osinfo As OSVERSIONINFO
Dim retvalue As Integer
osinfo.dwOSVersionInfoSize = 148
osinfo.szCSDVersion = Space$(128)
retvalue = GetVersionExA(osinfo)
getVersion = osinfo.dwPlatformId
End Function


Run the project and click the Command button on Form1. You should see a
listing of the currently running processes.
If you are running Windows 95/98, try running the example project on
Windows NT or vice versa. The processes should be listed regardless of
operating system version.

============= >
Cédric

"Sebdo" wrote in message
news:bn5kl7$cif$
> Heuu excuses moi mais le lien ne fonctionne pas chez moi....
>
> Tu pourrais me faire un petit copier coller si ce n'est pas trop abuser


?
>
> Merci beaucoup...
> Sebdo
>
> "cédric naudy" a écrit dans le message


news:
>
> > Ceci devrait vous aider :
> >
> > 187913 HOWTO: List Running Processes
> > http://support.microsoft.com/?id7913
> >
> > Cédric
>
> > > Bonjour,
> > >
> > > J'essaye désésperement d'obtenir une liste des processus actifs sur


un
> > poste
> > > ( le nom du .exe qui tourne ) afin de pouvoir l'arreter.
> > >
> > > Quelqu'un connait il une API ou autre chose permettant de faire ca
> > > simplement ?
> > >
> > > Merci d'avance pour vos réponse.
> > >
> > > Websebdo
> > >
> > >
> >
> >
>
>