Как узнать появился ли новый процесс?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Как узнать появился ли новый процесс?

Сообщение Don Leno » 13.10.2013 (Вс) 14:24

Реализаций Диспетчера задач в инете много, а как узнать что запустился новый процесс? Поиск в инете ничего не дал. перебрал не мало сайтов. толку нет. Я сам написал на базе функции CreateToolhelpSnapshot путем снятия скрина и сохранения предыдущего скрина процессов, потом сравнивая узнаю о новом процессе. Мож есть какая API для этого. Есть альтернативные варианты?
Мой проект прилагается:
Вложения
Disp.rar
(1.94 Кб) Скачиваний: 96

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 13.10.2013 (Вс) 17:36

Есть. WMI позволяет отследить запуск процесса. Писал подобный код. Но именно отследить, т. е. вмешаться и запретить запуск таким образом нельзя.

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 13.10.2013 (Вс) 17:42

Qwertiy писал(а):WMI позволяет отследить запуск процесса.

Код есть только на VB.NET:
Код: Выделить всё
Imports System.Management

Module All

WithEvents Watcher As New ManagementEventWatcher("SELECT * FROM __InstanceOperationEvent WITHIN 1 WHERE TargetInstance ISA ""Win32_Process""")

Public Sub Main()
  Watcher.Start()
  Console.ReadKey()
  Watcher.Stop()
End Sub

Private Sub Watcher_EventArrived(ByVal Sender As Object, ByVal E As EventArrivedEventArgs) Handles Watcher.EventArrived
  Dim EventType As String = E.NewEvent.ClassPath.ClassName
  'Dim Prc As New Win32_Process(TryCast(E.NewEvent("TargetInstance"), ManagementBaseObject))
  Dim Cmd As String = TryCast(E.NewEvent("TargetInstance"), ManagementBaseObject)("CommandLine")

  Select Case EventType
    Case "__InstanceCreationEvent"
      Console.WriteLine("{0:-16} {1}", EventType, Cmd)
    Case "__InstanceDeletionEvent"
      Console.WriteLine("{0:-16} {1}", EventType, Cmd)
    Case "__InstanceModificationEvent"
      'Console.WriteLine(EventType)
  End Select
End Sub

End Module

Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Re: Как узнать появился ли новый процесс?

Сообщение Don Leno » 14.10.2013 (Пн) 10:03

Qwertiy писал(а):
Qwertiy писал(а):WMI позволяет отследить запуск процесса.

Спс, постараюсь на VB6 перевести. а что за WMI? Я с ним еще не сталкивался, как с ним работать?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Как узнать появился ли новый процесс?

Сообщение Хакер » 14.10.2013 (Пн) 10:24

Don Leno писал(а):а что за WMI?

viewtopic.php?f=56&t=36390
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Re: Как узнать появился ли новый процесс?

Сообщение Don Leno » 14.10.2013 (Пн) 11:04

Хакер писал(а):
Don Leno писал(а):а что за WMI?

viewtopic.php?f=56&t=36390

Спасибо, Хакер за помощь. На основе можно создать целую утилиту по слежению за реестром. То что надо!
Вот только ссылки уже битые в статье.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Как узнать появился ли новый процесс?

Сообщение Хакер » 14.10.2013 (Пн) 11:12

Don Leno писал(а):На основе можно создать целую утилиту по слежению за реестром.

Так а причём тут процессы.

А слежение за реестром я бы иначе делал (не через WMI).
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Re: Как узнать появился ли новый процесс?

Сообщение Don Leno » 14.10.2013 (Пн) 12:55

Хакер писал(а):
Don Leno писал(а):На основе можно создать целую утилиту по слежению за реестром.

Так а причём тут процессы.

А слежение за реестром я бы иначе делал (не через WMI).

Все правильно, извините. Процессы там тоже описаны, я прочитав статью узнал и про реестр. А разве есть альтернативный метод слежения за реестром?
Поделитесь, пожалуйста, мне эта тема тож оч интересна! Ответ можно оставить в этой теме - http://bbs.vbstreets.ru/viewtopic.php?f=1&t=44716

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 14.10.2013 (Пн) 12:58

Don Leno писал(а):А разве есть альтернативный метод слежения за реестром?

А разве в твоей собственной соседней теме способ не альтернативный?

Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Re: Как узнать появился ли новый процесс?

Сообщение Don Leno » 14.10.2013 (Пн) 13:09

Qwertiy писал(а):
Don Leno писал(а):А разве есть альтернативный метод слежения за реестром?

А разве в твоей собственной соседней теме способ не альтернативный?

Он следит в общем. то есть если произошли изменения в реестре то он пишет "Изменен реестр!". А как следить к примеру за веткой в реестре Run отвечающую за автозапуск?
Пожалуйста можете писать эти ответы в той теме, потому как эта тема никак не относится к реестру.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 85

    TopList