Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.09.11;
Скачать: CL | DM;

Вниз

Включение/выключение устройства   Найти похожие ветки 

 
GEN++ ©   (2005-07-12 21:04) [0]

При этих ситуациях система генерит сообщеение VM_DEVICECHANGE
(под Win 98 - 4 раза под XP - 3 раза)
В справке указано, что парамеры передают тип события, но
приводятся они только в символьном виде)
У меня проблема, отследить появление/снятие Comm порта
сидященго на USB под драйвером CP2101(при отключении/установке
кабеля). Закрытие приложения при снятии кабеля тянет за собой
"синий экран, если не предпринять мер.
Вопрос: как грамотно разобрать сообщение.
Заранее спасибо.


 
simpson ©   (2005-07-12 21:27) [1]

Return Values
Return TRUE to grant the request.

Return BROADCAST_QUERY_DENY to deny the request.

Remarks
For devices that offer software-controllable features, such as ejection and locking, the system typically sends a DBT_DEVICEREMOVEPENDING message to let applications and device drivers end their use of the device gracefully. If the system forcibly removes a device, it may not send a DBT_DEVICEQUERYREMOVE message before doing so.

Читал?


 
Virgo_Style ©   (2005-07-12 22:08) [2]

const DBT_DEVICEARRIVAL = $8000;
const DBT_DEVICEQUERYREMOVE = $8001;
const DBT_DEVICEQUERYREMOVEFAILED = $8002;
const DBT_DEVICEREMOVEPENDING = $8003;
const DBT_DEVICEREMOVECOMPLETE = $8004;
const DBT_DEVICETYPESPECIFIC = $8005;
const DBT_CONFIGCHANGED = $0018;

            procedure TForm1.WMDeviceChange(var Message: TMessage);
            var
              s : string;
            begin
            {Do Something here}
              case Message.wParam of
                DBT_DEVICEARRIVAL :
                  s := "A device has been inserted and is now available";
                DBT_DEVICEQUERYREMOVE: begin
                  s := "Permission to remove a device is requested";
                  ShowMessage(s);
                 {True grants premission}
                  Message.Result := integer(true);
                  exit;
                end;
                DBT_DEVICEQUERYREMOVEFAILED :
                  s := "Request to remove a device has been canceled";
                DBT_DEVICEREMOVEPENDING :
                  s := "Device is about to be removed";
                DBT_DEVICEREMOVECOMPLETE :
                  s := "Device has been removed";
                DBT_DEVICETYPESPECIFIC :
                  s := "Device-specific event";
                DBT_CONFIGCHANGED :
                  s:= "Current configuration has changed"
                else s := "Unknown Device Message";
              end;
              ShowMessage(s);
              inherited;
            end;


Откуда взял - не помню...


 
GEN++ ©   (2005-07-20 20:24) [3]

>Virgo_Style
 Спасибо! Кое-чем помогло.
 Под Win 98 все нормально, но вот под XP
 поблема следующая: на некоторох компах
генерится параметр $8000 при восстановлении устройства
и $8004 при удалении, но на Ноуте в качестве параментра
устойчиво, 3 раза подряд выдается 0 как  при активизации
устройства, так и при его физическом удаплении. В панели
появление и удаление устройства четко отслеживается.
 Может быть все же кто-нибудь с этим работал. Нужна помощь.



Страницы: 1 вся ветка

Текущий архив: 2005.09.11;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.024 c
1-1124177493
tower
2005-08-16 11:31
2005.09.11
Печать штрих кодов и их сканирование.


8-1114415663
NorthMan
2005-04-25 11:54
2005.09.11
получение bmp-заголовка из jpeg


6-1116268479
olevacho_
2005-05-16 22:34
2005.09.11
Определение работают ли в интернет на компе


2-1123502285
M@rlin
2005-08-08 15:58
2005.09.11
запрос к БД из Дельфи


1-1124246472
anton_321
2005-08-17 06:41
2005.09.11
как выводить изображение в DBGrid.