В XP не ловится WM_DEVICECHANGE
От: DemOnWeb  
Дата: 21.08.07 15:23
Оценка:
Здравствуйте

Хочу поймать момент вставки CD диска в CD/DVD ROM

В Windows 2000 (и вроде бы XP без SP) это можно было сделать достаточно просто.
В Form перегрузить WndProc:


protected override void WndProc(ref Message m)
        {
            base.WndProc(ref m);        // call default p
            
            if (m.Msg == 0x0219) //WM_DEVICECHANGE
            {
                  // Сообщение WM_DEVICECHANGE приходит когда изменилась конфигурация
                  // Дальше определяется, как именно она изменилась, но тут это не важно
            }
        }


ПРОБЛЕМА В ТОМ, ЧТО В XP SP2 СООБЩЕНИЕ WM_DEVICECHANGE НЕ ПРИХОДИТ!
В Windows 2000 — приходит, в XP SP2 — НЕТ!
(пробовал на нескольких машинах)

Еще примеры:
http://www.codeproject.com/dotnet/devicevolumemonitor.asp
http://www.codeproject.com/cs/system/DriveDetector.asp

Эти примеры не работают под XP SP2! (по той же причине)

Собственно вопрос: почему в XP SP2 не перехватывается сообщение WM_DEVICECHANGE?

Заранее спасибо
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.