Page 1 sur 1

Gestion des Process Windows

MessagePublié: 16 Mars 2011 à 16:40
par Michael DELIQUE
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