Gestion des Process Windows

Gestion des Process Windows

Messagepar Michael DELIQUE » 16 Mars 2011 à 16:40

Public Function WindowsProcessID As Variant
Dim lstRetour List As String
Dim vrProcess As Variant
Dim i As Integer

On Error GoTo CatchError

Set vrProcess = GetObject("winmgmts:root\cimv2").execquery("select Name,ProcessId from win32_process")
i=0
ForAll Value In vrProcess
i=i+1
On Error Resume Next
lstRetour(i) = CStr(Value.Name)+ " = " + CStr(Value.ProcessId)
On Error GoTo CatchError
End ForAll
Set vrProcess = Nothing
If i = 0 Then
lstRetour(1) = ""
End If

WindowsProcessID = lstRetour
Erase lstRetour

Exit Function
CatchError:
MsgBox "("+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
Erase lstRetour
lstRetour(1) = ""
Set WindowsProcessID = Nothing
Erase lstRetour
Exit Function
End Function


Code : Tout sélectionner
Public Function WindowsProcessInfo(wnbProcessID As Integer) As Variant
   Dim lstRetour List As String
   Dim vrProcess As Variant

   On Error GoTo CatchError
   
      lstRetour("COMMANDLINE") = ""
      lstRetour("CREATIONCLASSNAME") = ""
      lstRetour("CREATIONDATE") = ""
      lstRetour("CSCREATIONCLASSNAME") = ""
      lstRetour("CSNAME") = ""
      lstRetour("DESCRIPTION") = ""
      lstRetour("EXECUTABLEPATH") = ""
      lstRetour("EXECUTIONSTATE") = ""
      lstRetour("HANDLE") = ""
      lstRetour("HANDLECOUNT") = ""
      lstRetour("INSTALLDATE") = ""
      lstRetour("KERNELMODETIME") = ""
      lstRetour("MAXIMUMWORKINGSETSIZE") = ""
      lstRetour("MINIMUMWORKINGSETSIZE") = ""
      lstRetour("NAME") = ""
      lstRetour("OSCREATIONCLASSNAME") = ""
      lstRetour("OSNAME") = ""
      lstRetour("OTHEROPERATIONCOUNT") = ""
      lstRetour("OTHERTRANSFERTCOUNT") = ""
      lstRetour("PAGEFAULTS") = ""
      lstRetour("PAGEFILEUSAGE") = ""
      lstRetour("PARENTPROCESSID") = ""
      lstRetour("PEAKPAGEILEUSAGEF") = ""
      lstRetour("PEAKVIRTUALSIZE") = ""
      lstRetour("PEAKWORKINGSETSIZE") = ""
      lstRetour("PRIORITY") = ""
      lstRetour("PRIVATEPAGECOUNT") = ""
      lstRetour("PROCESSID") = ""
      lstRetour("QUOTANONPAGEDPOOLUSAGE") = ""
      lstRetour("QUOTAPAGEDPOOLUSAGE") = ""
      lstRetour("QUOTAPEAKNONPAGEDPOOLUSAGE") = ""
      lstRetour("QUOTAPEAKPAGEDPOOLUSAGE") = ""
      lstRetour("READOPERATIONCOUNT") = ""
      lstRetour("READTRANSFERTCOUNT") = ""
      lstRetour("SESSIONID") = ""
      lstRetour("STATUS") = ""
      lstRetour("TERMINATIONDATE") = ""
      lstRetour("THREADCOUNT") = ""
      lstRetour("USERMODETIME") = ""
      lstRetour("VIRTUALSIZE") = ""
      lstRetour("WINDOWSVERSION") = ""
      lstRetour("WORKINGSETSIZE") = ""
      lstRetour("WRITEOPERATIONCOUNT") = ""
      lstRetour("WRITETRANSFERTCOUNT") = ""

   Set vrProcess = GetObject("winmgmts:root\cimv2").execquery("select * from win32_process where ProcessId="+CStr(wnbProcessID))

   ForAll Value In vrProcess
      On Error Resume Next
      lstRetour("COMMANDLINE") = CStr(Value.CommandLine)
      lstRetour("CREATIONCLASSNAME") = CStr(Value.CreationClassName)
      lstRetour("CREATIONDATE") = CStr(Value.CreationDate)
      lstRetour("CSCREATIONCLASSNAME") = CStr(Value.CSCreationClassName)
      lstRetour("CSNAME") = CStr(Value.CSName)
      lstRetour("DESCRIPTION") = CStr(Value.Description)
      lstRetour("EXECUTABLEPATH") = CStr(Value.ExecutablePath)
      lstRetour("EXECUTIONSTATE") = CStr(Value.ExecutionState)
      lstRetour("HANDLE") = CStr(Value.Handle)
      lstRetour("HANDLECOUNT") = CStr(Value.HandleCount)
      lstRetour("INSTALLDATE") = CStr(Value.InstallDate)
      lstRetour("KERNELMODETIME") = CStr(Value.KernelModeTime)
      lstRetour("MAXIMUMWORKINGSETSIZE") = CStr(Value.MaximumWorkingSetSize)
      lstRetour("MINIMUMWORKINGSETSIZE") = CStr(Value.MinimumWorkingSetSize)
      lstRetour("NAME") = CStr(Value.Name)
      lstRetour("OSCREATIONCLASSNAME") = CStr(Value.OSCreationClassName)
      lstRetour("OSNAME") = CStr(Value.OSName)
      lstRetour("OTHEROPERATIONCOUNT") = CStr(Value.OtherOperationCount)
      lstRetour("OTHERTRANSFERTCOUNT") = CStr(Value.OtherTransferCount)
      lstRetour("PAGEFAULTS") = CStr(Value.PageFaults)
      lstRetour("PAGEFILEUSAGE") = CStr(Value.PageFileUsage)
      lstRetour("PARENTPROCESSID") = CStr(Value.ParentProcessId)
      lstRetour("PEAKPAGEILEUSAGEF") = CStr(Value.PeakPageFileUsage)
      lstRetour("PEAKVIRTUALSIZE") = CStr(Value.PeakVirtualSize)
      lstRetour("PEAKWORKINGSETSIZE") = CStr(Value.PeakWorkingSetSize)
      lstRetour("PRIORITY") = CStr(Value.Priority)
      lstRetour("PRIVATEPAGECOUNT") = CStr(Value.PrivatePageCount)
      lstRetour("PROCESSID") = CStr(Value.ProcessId)
      lstRetour("QUOTANONPAGEDPOOLUSAGE") = CStr(Value.QuotaNonPagedPoolUsage)
      lstRetour("QUOTAPAGEDPOOLUSAGE") = CStr(Value.QuotaPagedPoolUsage)
      lstRetour("QUOTAPEAKNONPAGEDPOOLUSAGE") = CStr(Value.QuotaPeakNonPagedPoolUsage)
      lstRetour("QUOTAPEAKPAGEDPOOLUSAGE") = CStr(Value.QuotaPeakPagedPoolUsage)
      lstRetour("READOPERATIONCOUNT") = CStr(Value.ReadOperationCount)
      lstRetour("READTRANSFERTCOUNT") = CStr(Value.ReadTransferCount)
      lstRetour("SESSIONID") = CStr(Value.SessionId)
      lstRetour("STATUS") = CStr(Value.Status)
      lstRetour("TERMINATIONDATE") = CStr(Value.TerminationDate)
      lstRetour("THREADCOUNT") = CStr(Value.ThreadCount)
      lstRetour("USERMODETIME") = CStr(Value.UserModeTime)
      lstRetour("VIRTUALSIZE") = CStr(Value.VirtualSize)
      lstRetour("WINDOWSVERSION") = CStr(Value.WindowsVersion)
      lstRetour("WORKINGSETSIZE") = CStr(Value.WorkingSetSize)
      lstRetour("WRITEOPERATIONCOUNT") = CStr(Value.WriteOperationCount)
      lstRetour("WRITETRANSFERTCOUNT") = CStr(Value.WriteTransferCount)
      On Error GoTo CatchError
   End ForAll
   Set vrProcess = Nothing

   WindowsProcessInfo = lstRetour
   Erase lstRetour
   
   Exit Function
CatchError:
   MsgBox "("+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
   Erase lstRetour
         lstRetour("COMMANDLINE") = ""
      lstRetour("CREATIONCLASSNAME") = ""
      lstRetour("CREATIONDATE") = ""
      lstRetour("CSCREATIONCLASSNAME") = ""
      lstRetour("CSNAME") = ""
      lstRetour("DESCRIPTION") = ""
      lstRetour("EXECUTABLEPATH") = ""
      lstRetour("EXECUTIONSTATE") = ""
      lstRetour("HANDLE") = ""
      lstRetour("HANDLECOUNT") = ""
      lstRetour("INSTALLDATE") = ""
      lstRetour("KERNELMODETIME") = ""
      lstRetour("MAXIMUMWORKINGSETSIZE") = ""
      lstRetour("MINIMUMWORKINGSETSIZE") = ""
      lstRetour("NAME") = ""
      lstRetour("OSCREATIONCLASSNAME") = ""
      lstRetour("OSNAME") = ""
      lstRetour("OTHEROPERATIONCOUNT") = ""
      lstRetour("OTHERTRANSFERTCOUNT") = ""
      lstRetour("PAGEFAULTS") = ""
      lstRetour("PAGEFILEUSAGE") = ""
      lstRetour("PARENTPROCESSID") = ""
      lstRetour("PEAKPAGEILEUSAGEF") = ""
      lstRetour("PEAKVIRTUALSIZE") = ""
      lstRetour("PEAKWORKINGSETSIZE") = ""
      lstRetour("PRIORITY") = ""
      lstRetour("PRIVATEPAGECOUNT") = ""
      lstRetour("PROCESSID") = ""
      lstRetour("QUOTANONPAGEDPOOLUSAGE") = ""
      lstRetour("QUOTAPAGEDPOOLUSAGE") = ""
      lstRetour("QUOTAPEAKNONPAGEDPOOLUSAGE") = ""
      lstRetour("QUOTAPEAKPAGEDPOOLUSAGE") = ""
      lstRetour("READOPERATIONCOUNT") = ""
      lstRetour("READTRANSFERTCOUNT") = ""
      lstRetour("SESSIONID") = ""
      lstRetour("STATUS") = ""
      lstRetour("TERMINATIONDATE") = ""
      lstRetour("THREADCOUNT") = ""
      lstRetour("USERMODETIME") = ""
      lstRetour("VIRTUALSIZE") = ""
      lstRetour("WINDOWSVERSION") = ""
      lstRetour("WORKINGSETSIZE") = ""
      lstRetour("WRITEOPERATIONCOUNT") = ""
      lstRetour("WRITETRANSFERTCOUNT") = ""
   Set WindowsProcessInfo = Nothing
   Erase lstRetour
   Exit Function
End Function


Code : Tout sélectionner
Public Function WindowsProcessKill(wProcessName As String, wnbProcessID As Integer) As String
   Dim vrProcess As Variant
   Dim selection As String
   Dim i As Integer
   On Error GoTo CatchError
   
   WindowsProcessKill = ""

   If Trim(wProcessName) = "" Then
      Selection = {select Name,ProcessId from win32_process where ProcessId=}+CStr(wnbProcessID)
   Else
      Selection =   {select Name,ProcessId from win32_process where Name='}+Trim(wProcessName)+{'}
   End If

   Set vrProcess = GetObject("winmgmts:root\cimv2").execquery(Selection)
   ForAll value In vrProcess
      value.Terminate(i)   
      If i <> 0 Then
         Exit ForAll
      End If
   End ForAll
   Set vrProcess = Nothing
   
   Select Case i      
   Case 0
      REM "Successful Completion"
      WindowsProcessKill = ""
   Case 2
      WindowsProcessKill = "Access Denied (2)"
   Case 3
      WindowsProcessKill = "Insufficient Privilege (3)"
   Case 8
      WindowsProcessKill = "Unknown Failure (8)"
   Case 9
      WindowsProcessKill = "Path Not Found (9)"
   Case 21
      WindowsProcessKill = "Invalid Parameter (21)"
   Case Else
      WindowsProcessKill = "Unknown Error ("+CStr(i)+")"
   End Select
   
   Exit Function
CatchError:
   MsgBox "("+Cstr(GetThreadInfo (1))+" Call by "+Cstr(GetThreadInfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + CStr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
   WindowsProcessKill = "Erreur " + Str(Err) + " : " + CStr(Error)+". Ligne N° "+Cstr(Erl)
   Exit Function
End Function


Code : Tout sélectionner
Public Function WindowsProcessName As Variant

   Dim lstRetour List As String
   Dim vrProcess As Variant
   Dim i As Integer
   
   On Error Goto CatchError
      
   vrProcess = GetObject("winmgmts:root\cimv2").execquery("select Name, ExecutablePath from win32_process")
   i=0
   Forall Value In vrProcess
      i=i+1
      On Error Resume Next
      lstRetour(i) = Cstr(Value.Name)+ " = " + Cstr(Value.ExecutablePath)
      On Error GoTo CatchError
   End Forall
   Set vrProcess = Nothing
   If i = 0 Then
      lstRetour(1) = ""
   End If
   
   WindowsProcessName = lstRetour
   Erase lstRetour
   
   Exit Function
CatchError:
   Msgbox "("+Cstr(Getthreadinfo (1))+" Call by "+Cstr(Getthreadinfo(10))+")"+Chr(10)+"Erreur " + Str(Err) + " : "+Chr(10) + Cstr(Error)+". "+Chr(10)+"Ligne N° "+Cstr(Erl),16," ERREUR !"
   Erase lstRetour
   lstRetour(1) = ""
   WindowsProcessName = lstRetour
   Erase lstRetour
   Exit Function
End Function
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Retour vers Divers