Для примера (мой скрипт в изысках по управлению приложениями):
- Код: Выделить всё
'/********************************************************************/
'/* Имя: ListProcesses.vbs */
'/* Язык: VBScript */
'/* Описание: Вывод на экран списка всех запущенных на локальной */
'/* рабочей станции процессов */
'/********************************************************************/
Dim WMI ' //Экземпляр WMI
Dim Process ' //Экземпляр коллекции
dim SQuery
Dim SList ' //Строка для вывода на экран
dim WShell '
Dim Processes 'Коллекция процессов
Dim ListFile 'имя файла вывода
Dim FSO 'объект файловой системы
Dim sOwnerUser, sOwnerDomain
Dim Ret
' //Соединяемся с WMI
Set FSO=CreateObject("Scripting.FileSystemObject")
Set WShell=CreateObject("Wscript.Shell")
set WMI=GetObject("winMgmts:")
'Формируем текст запроса
SQuery="SELECT * FROM Win32_Process WHERE Name<>'EXPLORER.EXE'"
'Создаем коллекцию-результат запроса
set Processes=WMI.ExecQuery(SQuery)
'Цикл по всем элементам коллекции
for each Process in Processes
' //Формируем строку с именами процессов
SList=SList & "Имя процесса: " & Process.Name & vbcrlf
'// Отобразим хендл процесса
SList=SList & "Хендл процесса: " & Process.Handle & vbcrlf
'Получим PID процесса (по нему мы ниже сможем через Shell.AppActivate
'управлять приложением через SendKeys
SList=SList & "Process ID (PID): " & Process.ProcessId & vbcrlf
'Получим полный путь к исполняемому файлу
SList = SList & "ExecutablePath: " & Process.ExecutablePath & vbcrlf
'Получим имя пользователя от которого запущен процесс
Process.GetOwner sOwnerUser,sOwnerDomain
SList=SList & "Запущено от имени: " & sOwnerDomain & "\" & sOwnerUser & vbcrlf
SList=SList & "- - - - - - - - - - - -" & vbcrlf
'Следующие строки показывают - имеет ли процесс хоть одно видимое окно
' WShell.popup "Попытка активировать приложение " & vbcrlf & _
' Process.name & vbcrlf & _
' "(" & Process.executablepath & ")", 2
'Если процесс имеет видимое окно - то Ret после вызова нижележащей строки
'получит значение больше нуля. Если меньше нуля - значит процесс или не имеет окон
'или все окна у него невидимы
ret = WShell.AppActivate (Process.processid)
'сделаем небольшую паузу, чтобы приложение успело активироваться.
If Ret> 0 Then
WScript.Sleep 1000
' WShell.Popup "Удачная попытка активации " & Process.name, 3
'Else
' WShell.Popup "Неудачная попытка активации " & Process.name, 5
End If
Next
'//Выводим информацию на экран
'MsgBox SList,,"Список запущенных процессов."
'// или выводим информацию в файл
Set ListFile=FSO.CreateTextFile("C:\ListProcess.txt")
ListFile.write(SList)
ListFile.close
Set ListFile=Nothing
Set FSO=Nothing
Set WMI=nothing
WScript.Quit
'/************* Конец *********************************************/