Отлов системных событий Windows

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Отлов системных событий Windows

Сообщение jangle » 05.03.2007 (Пн) 9:54

Вобщем хочу реагировать на различные события происходящие в системе. Например вставка диска в CD - привод, подключение флэшки, отключение локальной сети и т.д. Например пользователь вставляет в привод диск, и не нажимая ничего и не кликая мышкой, просто закрывает лоток привода, программа отловила, что диск вставлен и автоматически начинает записывать на него данные. Очень удобно, когда у тебя 10 компов и надо записать 5000 дисков.
Есть ли в винде такое хитрое место, куда стекаются все системные события, чтобы можно было удобно их фильтровать и отлавливать нужные мне?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 05.03.2007 (Пн) 10:18

10 компов и 5000 дисков - это подпольная студия :)
А так http://www.microsoft.com/technet/techne ... fault.aspx
Ну и вообще http://www.microsoft.com/technet/techne ... fault.aspx
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 05.03.2007 (Пн) 11:01

Понятно, но WMI для меня темный лес, а попроще как-нибудь можно отслеживать аудит событий?
Типа FindFirstChangeNotification или подобных API

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 05.03.2007 (Пн) 13:03

имхо, WMI и будет наиболее простым решением в ДАННОЙ ситуации. Я бы всё же рекомендовал пройти по указанным ссылкам.
Salus populi suprema lex

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 05.03.2007 (Пн) 13:09

dr.MIG
Сделай поправку на то, что гн. jangle, насколько я понимаю, пишет преимущественно на PB. А там с COM некоторые проблемы.
Изображение

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 05.03.2007 (Пн) 14:16

По ссылке ходил, вобщем WMI тема глубокая и требует изучения. Есть ли примеры на VB отлова момента вставки диска или флэшки?
Насколько я понимаю, WMI работает только на Win 2000/XP/Vista , а 98/ME идут лесом?

keks-n - да нет, не в этом дело. На http://com.it-berater.org/wmi.htm лежит рабочий враппер, который автоматически генерит обвеску PB-кода для WMI классов. Так что заюзать Management Instrumentation не проблема.

Просто хочется универсальное решение для всех версий виндов

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 05.03.2007 (Пн) 15:28

Для 98/me надо скачать WMI Core.

Примеры отлова вставки, как ни странно, находятся в поиске. WIn32_logicaldisk ищи.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 05.03.2007 (Пн) 15:30

Ещё для ознакомления со структурой WMI, а так же с подпиской на события (что как раз и необходимо автору топика) советую зайти сюда:
http://www.script-coding.info/index.html
И вдогонку (тоже может пригодиться... даже очень пригодится :wink: ):
WMI Code Creator v1.0
Salus populi suprema lex

Rewizorr
Новичок
Новичок
 
Сообщения: 30
Зарегистрирован: 18.03.2007 (Вс) 5:04

Сообщение Rewizorr » 19.03.2007 (Пн) 3:26

Насчет всего не знаю, а я бы определил наличие диска в приводе так:

On Error Resume Next
If Dir("l:") <> "" Then GoTo e:
e:
If Err.Number > 0 Then MsgBox "Диск куда-то пропал..." Else MsgBox "Диск есть!"
'l - буква сидирома

Немного бредово, но иначе почему-то не получилось....
Если поможет, то прошу отписаться мне на мыло samens@freemail.ru

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 19.03.2007 (Пн) 6:42

Очень сильно не в тему.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Kostyan
Постоялец
Постоялец
 
Сообщения: 439
Зарегистрирован: 20.09.2002 (Пт) 4:14
Откуда: Россия, Уссурийск

Сообщение Kostyan » 19.03.2007 (Пн) 12:22

Отлавливай cсообщение WM_DEVICECHANGE.
Либо можно воспользоваться функцией RegisterDeviceNotification.
Выбирай что удобнее :)
Нет ничего невозможного для человека с интеллектом.


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

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

Сейчас этот форум просматривают: Google-бот и гости: 34

    TopList  
cron