@DragonsWP: WMI da para mucho
, con saber algo sobre queries SQL puedes hacer de todo
Aqui te dejo lo que pediste:
Private Sub CloseAllProcessesBut(ParamArray vNames() As Variant)
Dim vName As Variant
Dim oProc As Object
Dim oWMI As Object
Dim sQuery As String
sQuery = "SELECT * FROM Win32_Process WHERE"
For Each vName In vNames
sQuery = sQuery & " (Name <> '" & vName & "') AND"
Next vName
sQuery = Left$(sQuery, Len(sQuery) - Len(" AND"))
For Each oProc In GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2").ExecQuery(sQuery)
Call oProc.Terminate
Next oProc
End Sub
Call CloseAllProcessesBut("calc.exe", "explorer.exe", "notepad.exe", "vb6.exe", "chrome.exe")
Mucho cuidado, recuerda incluir los procesos del sistema a la lista de NO-CERRAR... puede haber resultados inesperados si no lo haces
@B0X: A mi tambien me gustan las APIs en muchos casos, pero en este la proporcion de codigo me hace decantarme por WMI
MOD: Te digo lo mismo que a SkyWeb, el
taskkill utiliza WMI, asi que supongo que esos W$ UE de los que hablas solo desactivaran una parte o bien dejan de ir app de W$ como esa...